2 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個贊
Gorilla 聊天示例接近您的需要。該示例將從任何客戶端接收到的消息廣播到所有連接的客戶端。執(zhí)行以下操作以使代碼適應(yīng)您的用例:
更改客戶端讀取泵以丟棄收到的消息,而不是將消息發(fā)送到集線器。
func (c *Client) readPump() {
defer func() {
c.hub.unregister <- c
c.conn.Close()
}()
c.conn.SetReadLimit(maxMessageSize)
c.conn.SetReadDeadline(time.Now().Add(pongWait))
c.conn.SetPongHandler(func(string) error {
c.conn.SetReadDeadline(time.Now().Add(pongWait)); return nil })
for {
if _, _, err := c.NextReader(); err != nil {
break
}
}
}
更改您的 Kafka 讀取循環(huán)以將消息發(fā)送到Hub.broadcast通道。
for {
msg, err := c.ReadMessage(xxx)
if err != nil {
// handle error
}
hub.broadcast <- msg
}
刪除將客戶端發(fā)送隊(duì)列中的消息合并為單個 websocket 消息的代碼,或者調(diào)整客戶端以在單個 websocket 消息中處理多個 Kafka 消息。
- 2 回答
- 0 關(guān)注
- 327 瀏覽
添加回答
舉報(bào)