我正在使用来自 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 关注
- 130 浏览
添加回答
举报
0/150
提交
取消