gpt4 book ai didi

Gorilla websockets,一个事件中的多个消息

转载 作者:行者123 更新时间:2023-12-01 21:19:18 28 4
gpt4 key购买 nike

我正在使用来自 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有不同的数据

最佳答案

client.go中的以下代码通过将排队的聊天消息作为单个 WebSocket 消息发送,减少了通过网络发送的数据量:

        n := len(c.send)
for i := 0; i < n; i++ {
w.Write(newline)
w.Write(<-c.send)
}

通过删除示例中的代码来解决问题。不需要优化。

关于Gorilla websockets,一个事件中的多个消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60590283/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com