我正在使用來自 gorilla websockets 的聊天應用程序示例,但我有一個問題,有時,當后端需要向客戶端發送兩條不同的消息時,它們僅在一個消息事件中發送,這對我來說很糟糕,因為 JSON.parse從一個字符串解析 2 個 json 將失敗。我可以按換行符進行分割并從消息中獲取每個 json,但我不喜歡這樣做。如果我在后端設置超時,一切都會正常。我可以做些什么來防止這種情況發生嗎?如果不是,你能解釋一下為什么嗎?這是聊天示例: https ://github.com/gorilla/websocket/tree/master/examples/chat這是我的代碼,我在其中廣播了 2 條消息:if err == nil { c.SendMessageWithOrders(DB) data := models.EventSuccess{ Event: utils.EventOrdersCreateSuccess, } toReturnBytes, err := json.Marshal(data) if err == nil { toReturn := BroadcastOne{ ID: c.ID, Message: toReturnBytes, } NewHub.broadcastOne <- &toReturn }}c.SendMessageWithOrders(DB)NewHub.broadcastOne <- &toReturn用不同的數據制作
1 回答

慕無忌1623718
TA貢獻1744條經驗 獲得超4個贊
client.go中的以下代碼通過將排隊的聊天消息作為單個 WebSocket 消息發送來減少通過網絡發送的數據量:
? n := len(c.send)
? ? ? ? for i := 0; i < n; i++ {
? ? ? ? ? ? w.Write(newline)
? ? ? ? ? ? w.Write(<-c.send)
? ? ? ? }
通過從示例中刪除代碼來修復問題。不需要優化。
- 1 回答
- 0 關注
- 172 瀏覽
添加回答
舉報
0/150
提交
取消