Gorilla websocket,一个事件中多条消息

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


Cats萌萌
浏览 131回答 1
1回答

慕无忌1623718

client.go中的以下代码通过将排队的聊天消息作为单个 WebSocket 消息发送来减少通过网络发送的数据量:  n := len(c.send)        for i := 0; i < n; i++ {            w.Write(newline)            w.Write(<-c.send)        }通过从示例中删除代码来修复问题。不需要优化。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go