feat: add Chinese comments for Kafka and WebSocket server functionalities to improve code readability

This commit is contained in:
Kai 2025-05-23 12:02:44 +08:00
parent e9f0f8fd40
commit 0b8757a824
6 changed files with 20 additions and 7 deletions

View File

@ -20,6 +20,7 @@ type Data struct {
func NewData(c *conf.Data, logger log.Logger) (*Data, func(), error) { func NewData(c *conf.Data, logger log.Logger) (*Data, func(), error) {
log := log.NewHelper(logger) log := log.NewHelper(logger)
// 创建 Kafka 生产者
kafkaWriter := kafka.NewKafkaWriter(c.Kafka.Brokers, c.Kafka.Topic) kafkaWriter := kafka.NewKafkaWriter(c.Kafka.Brokers, c.Kafka.Topic)
cleanup := func() { cleanup := func() {

View File

@ -28,7 +28,7 @@ type Message struct {
Content json.RawMessage `json:"content"` Content json.RawMessage `json:"content"`
} }
// SendMessage sends a message to Kafka. // SendMessage 发送消息到 Kafka
func (r *WebSocketRepo) SendMessage(ctx context.Context, message []byte) error { func (r *WebSocketRepo) SendMessage(ctx context.Context, message []byte) error {
err := r.data.kafka.SendToKafkaMessage(ctx, "websocket", message) err := r.data.kafka.SendToKafkaMessage(ctx, "websocket", message)
if err != nil { if err != nil {

View File

@ -17,6 +17,7 @@ type KafkaConsumerServer struct {
wg sync.WaitGroup wg sync.WaitGroup
} }
// NewKafkaConsumerServer 创建 Kafka 消费者服务器
func NewKafkaConsumerServer(c *conf.Data, wsService *service.WebSocketService) (*KafkaConsumerServer, func()) { func NewKafkaConsumerServer(c *conf.Data, wsService *service.WebSocketService) (*KafkaConsumerServer, func()) {
consumer := kafka.NewKafkaReader(c.Kafka.Brokers, c.Kafka.Topic, int(c.Kafka.Partition), c.Kafka.GroupId) consumer := kafka.NewKafkaReader(c.Kafka.Brokers, c.Kafka.Topic, int(c.Kafka.Partition), c.Kafka.GroupId)
messageHandler := service.NewMessageHandler(wsService, consumer.Reader) messageHandler := service.NewMessageHandler(wsService, consumer.Reader)
@ -33,17 +34,20 @@ func NewKafkaConsumerServer(c *conf.Data, wsService *service.WebSocketService) (
} }
} }
// Start 启动 Kafka 消费者
func (s *KafkaConsumerServer) Start(ctx context.Context) error { func (s *KafkaConsumerServer) Start(ctx context.Context) error {
s.wg.Add(1) s.wg.Add(1)
go s.consumeMessages(ctx) go s.consumeMessages(ctx)
return nil return nil
} }
// Stop 停止 Kafka 消费者
func (s *KafkaConsumerServer) Stop(ctx context.Context) error { func (s *KafkaConsumerServer) Stop(ctx context.Context) error {
s.wg.Wait() s.wg.Wait()
return s.consumer.Close() return s.consumer.Close()
} }
// consumeMessages 消费 Kafka 消息
func (s *KafkaConsumerServer) consumeMessages(ctx context.Context) { func (s *KafkaConsumerServer) consumeMessages(ctx context.Context) {
defer s.wg.Done() defer s.wg.Done()

View File

@ -25,6 +25,7 @@ type WebSocketServer struct {
done chan struct{} // 添加 done 通道用于优雅关闭 done chan struct{} // 添加 done 通道用于优雅关闭
} }
// NewWebSocketServer 创建 WebSocket 服务器
func NewWebSocketServer(c *conf.Server, svc *service.WebSocketService) *WebSocketServer { func NewWebSocketServer(c *conf.Server, svc *service.WebSocketService) *WebSocketServer {
return &WebSocketServer{ return &WebSocketServer{
conf: c, conf: c,
@ -42,6 +43,7 @@ func NewWebSocketServer(c *conf.Server, svc *service.WebSocketService) *WebSocke
} }
} }
// Start 启动 WebSocket 服务器
func (s *WebSocketServer) Start(ctx context.Context) error { func (s *WebSocketServer) Start(ctx context.Context) error {
mux := http.NewServeMux() mux := http.NewServeMux()
mux.HandleFunc(s.conf.Websocket.Path, s.handleWebSocket) mux.HandleFunc(s.conf.Websocket.Path, s.handleWebSocket)
@ -64,6 +66,7 @@ func (s *WebSocketServer) Start(ctx context.Context) error {
return nil return nil
} }
// Stop 停止 WebSocket 服务器
func (s *WebSocketServer) Stop(ctx context.Context) error { func (s *WebSocketServer) Stop(ctx context.Context) error {
// 关闭所有 WebSocket 连接 // 关闭所有 WebSocket 连接
s.mu.Lock() s.mu.Lock()
@ -87,6 +90,7 @@ func (s *WebSocketServer) Stop(ctx context.Context) error {
return nil return nil
} }
// handleWebSocket 处理 WebSocket 连接请求
func (s *WebSocketServer) handleWebSocket(w http.ResponseWriter, r *http.Request) { func (s *WebSocketServer) handleWebSocket(w http.ResponseWriter, r *http.Request) {
log.Printf("Received WebSocket connection request from %s", r.RemoteAddr) log.Printf("Received WebSocket connection request from %s", r.RemoteAddr)
@ -101,6 +105,7 @@ func (s *WebSocketServer) handleWebSocket(w http.ResponseWriter, r *http.Request
go s.readPump(conn) go s.readPump(conn)
} }
// readPump 读取 WebSocket 消息
func (s *WebSocketServer) readPump(conn *websocket.Conn) { func (s *WebSocketServer) readPump(conn *websocket.Conn) {
defer func() { defer func() {
s.unregister <- conn s.unregister <- conn
@ -138,17 +143,18 @@ func (s *WebSocketServer) readPump(conn *websocket.Conn) {
} }
} }
// run 运行 WebSocket 服务器
func (s *WebSocketServer) run() { func (s *WebSocketServer) run() {
for { for {
select { select {
case <-s.done: case <-s.done: // 如果 done 通道被关闭,则退出循环
return return
case client := <-s.register: case client := <-s.register: // 如果 register 通道有新的连接,则将连接添加到 clients 中
s.mu.Lock() s.mu.Lock()
s.clients[client] = true s.clients[client] = true
s.mu.Unlock() s.mu.Unlock()
log.Printf("New client connected. Total clients: %d", len(s.clients)) log.Printf("New client connected. Total clients: %d", len(s.clients))
case client := <-s.unregister: case client := <-s.unregister: // 如果 unregister 通道有连接关闭,则将连接从 clients 中删除
s.mu.Lock() s.mu.Lock()
if _, ok := s.clients[client]; ok { if _, ok := s.clients[client]; ok {
delete(s.clients, client) delete(s.clients, client)
@ -156,7 +162,7 @@ func (s *WebSocketServer) run() {
} }
s.mu.Unlock() s.mu.Unlock()
log.Printf("Client disconnected. Total clients: %d", len(s.clients)) log.Printf("Client disconnected. Total clients: %d", len(s.clients))
case message := <-s.broadcast: case message := <-s.broadcast: // 如果 broadcast 通道有消息,则广播消息给所有客户端
s.mu.Lock() s.mu.Lock()
for client := range s.clients { for client := range s.clients {
err := client.WriteMessage(websocket.TextMessage, message) err := client.WriteMessage(websocket.TextMessage, message)

View File

@ -21,6 +21,7 @@ type WebSocketMessage struct {
Payload json.RawMessage `json:"payload,omitempty"` Payload json.RawMessage `json:"payload,omitempty"`
} }
// NewMessageHandler 创建 MessageHandler
func NewMessageHandler(wsService *WebSocketService, reader *kafkago.Reader) *MessageHandler { func NewMessageHandler(wsService *WebSocketService, reader *kafkago.Reader) *MessageHandler {
return &MessageHandler{ return &MessageHandler{
wsService: wsService, wsService: wsService,
@ -52,6 +53,7 @@ func (h *MessageHandler) parseWebSocketMessage(message []byte) (*WebSocketMessag
return &wsMsg, nil return &wsMsg, nil
} }
// HandleMessage 处理 Kafka 消息
func (h *MessageHandler) HandleMessage(message *kafkago.Message) error { func (h *MessageHandler) HandleMessage(message *kafkago.Message) error {
// 解析并打印格式化的 JSON // 解析并打印格式化的 JSON
prettyJSON, err := h.parseJSONMessage(message.Value) prettyJSON, err := h.parseJSONMessage(message.Value)

View File

@ -21,7 +21,7 @@ type Client struct {
Topics map[string]bool Topics map[string]bool
} }
// NewWebSocketService new a WebSocket service. // NewWebSocketService 创建 WebSocket 服务
func NewWebSocketService(uc *biz.WebSocketUsecase) *WebSocketService { func NewWebSocketService(uc *biz.WebSocketUsecase) *WebSocketService {
return &WebSocketService{ return &WebSocketService{
uc: uc, uc: uc,
@ -29,7 +29,7 @@ func NewWebSocketService(uc *biz.WebSocketUsecase) *WebSocketService {
} }
} }
// HandleMessage handles incoming WebSocket messages. // HandleMessage 处理 WebSocket 消息
func (s *WebSocketService) HandleMessage(ctx context.Context, message []byte) error { func (s *WebSocketService) HandleMessage(ctx context.Context, message []byte) error {
return s.uc.HandleMessage(ctx, message) return s.uc.HandleMessage(ctx, message)
} }