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

jal*_*nga 2 go websocket gorilla

我正在使用来自 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
    }
}
Run Code Online (Sandbox Code Playgroud)

c.SendMessageWithOrders(DB)正在NewHub.broadcastOne <- &toReturn使用不同的数据

Cer*_*món 5

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

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

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