为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
Cats萌萌 2023-08-14 17:24:22
我正在使用来自 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)

        }

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


查看完整回答
反对 回复 2023-08-14
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信