【发布时间】:2020-05-14 05:30:57
【问题描述】:
基于“room”的WebSocket连接或WebSocket中的“广播”选项背后的技术或策略是什么?
我们是否将“用户的 WebSocket 连接 ID”存储在基于房间的聊天系统的特定列表中? 在发送时,我们是否使用 for 循环向每个参与者/WebSocket-Connection-ID “发送/接收”消息,或者我们是否有一个 API 可以在不使用循环的情况下一次性向所有组用户发送消息?
我正在使用“gorilla WebSocket”-https://github.com/gorilla/websocket
如果我们将 WS 连接 ID 存储在列表中,那么如果任何房间增加了 5000 个参与者,那么运行 for loop 为每个参与者发送/接收消息将变得非常麻烦。
请不要共享任何库,我想了解基于房间的聊天系统如何工作或在后端运行?
【问题讨论】:
-
Telegram Chat 有 1 个群组的 5000 名成员限制,他们真的运行
for loop来向数百万个群组中的所有 5000 名成员发送消息吗? -
服务最终对每个 websocket 连接执行写入操作。 websockets 或底层 TCP 层没有广播功能。
标签: go websocket uwebsockets