socket.io - io.emit 发送数据的效率如何?
问题描述
我们正在使用 socket.io 进行一些实时消息广播。
假设我们有 10 个连接的客户端。
在服务器端,我们使用 io.emit(„channel1“,payload) 发送消息。
只有 1 个连接的客户端通过调用 socket.on(‘channel1’,function()...) 监听消息 ‘channel1’
消息是真的发送到所有 10 个客户端,还是只发送到侦听通道 1 的 1 个客户端?
如果将消息发送给所有 10 个客户端,我们将有很大的开销,因为其他 9 个客户端将完全忽略该消息。
还是我们应该使用命名空间?
解决方案
简短的回答是肯定的,它会将它发送给每个人,但如果你想将它发送到特定的通道,那么你需要发送到 namespace,这本质上只是一个端点。如果您想尝试一下,那么有一个很好的 chrome 扩展Firecamp
如果您熟悉 Observables,那么 Observables 就像 Websockets 的实现。您订阅了一个事件(就像您在 JavaScript 中所做的那样.addEventListener()
,然后它就坐在那里......等待......然后等待......然后BOOM它收到一个信号来监听数据并采取行动。我希望这可以清除它,如果没有,那么我将编辑以获取更多信息
推荐阅读
- jquery - 根据从每个表单的选择菜单中选择的数量更新价格
- azure - 如何使用共享密钥将事件发送到 Azure IoT Hub 中的设备进行身份验证
- django - 如何使用 sys.modules hack 将变量转换为模块?
- javascript - 使用 Selenium JavaScript 无法单击按钮
- javascript - 如何覆盖 console.log 以使每个调用都有一个对象的 UUID?
- mongodb - 如何在 mongo $lookup 中的管道中执行操作
- python - OpenCV(-215:断言失败)!_src.empty()
- assembly - ARM AArch32 本地标签与命名标签速度
- php - 从包含的会话中传递会话变量
- javascript - 如何在这个 vuejs 示例中创建一个 href 条件?