首页 > 解决方案 > io.emit 发送数据的效率如何?

问题描述

我们正在使用 socket.io 进行一些实时消息广播。

假设我们有 10 个连接的客户端。

在服务器端,我们使用 io.emit(„channel1“,payload) 发送消息。

只有 1 个连接的客户端通过调用 socket.on(‘channel1’,function()...) 监听消息 ‘channel1’

消息是真的发送到所有 10 个客户端,还是只发送到侦听通道 1 的 1 个客户端?

如果将消息发送给所有 10 个客户端,我们将有很大的开销,因为其他 9 个客户端将完全忽略该消息。

还是我们应该使用命名空间?

标签: socket.io

解决方案


简短的回答是肯定的,它会将它发送给每个人,但如果你想将它发送到特定的通道,那么你需要发送到 namespace,这本质上只是一个端点。如果您想尝试一下,那么有一个很好的 chrome 扩展Firecamp

如果您熟悉 Observables,那么 Observables 就像 Websockets 的实现。您订阅了一个事件(就像您在 JavaScript 中所做的那样.addEventListener(),然后它就坐在那里......等待......然后等待......然后BOOM它收到一个信号来监听数据并采取行动。我希望这可以清除它,如果没有,那么我将编辑以获取更多信息


推荐阅读