【问题标题】:Will socket.io broadcast without listener consume resources?没有监听器的socket.io广播会消耗资源吗?
【发布时间】:2016-06-04 03:16:15
【问题描述】:

假设我有一个 socket.io 事件io.emit('foo','large foo content'),并且有很多客户端,其中一些正在监听 foo socket.on('foo',function(content){ console.log(content);}

所以我的问题是向非听众发送是否会发送实际消息。

广播大型消息时有很多非听众会影响性能吗?

我知道房间,但我想成为处理听什么或不听什么的客户。

【问题讨论】:

    标签: node.js sockets websocket socket.io


    【解决方案1】:

    无论另一端是否有监听器,发送到套接字都会发送消息(发送方不知道是否有监听器)。这会消耗带宽、电池和少量 CPU,但除非您发送大量消息或大量消息,否则这通常不是问题。

    当接收到消息时,接收 socket.io 代码将消息解包,然后将其广播到任何本地侦听器。如果没有本地听众,那么当时它就什么也做不了。然后消息就被垃圾回收了。

    如果您要发送大量消息或大量消息,最好只将它们发送给关心它们并正在监听它们的客户。这很容易通过使用房间创建自己的订阅/发布系统来实现(您可能已经知道了)。对给定消息类别感兴趣的客户可以请求分配到相关房间(基本上订阅这些消息)。然后,当服务器想要发送该类消息时,它可以将其广播给相应房间的成员,并且只会发送给那些表示对该类消息感兴趣的客户端。

    【讨论】:

      猜你喜欢
      • 2021-08-25
      • 2011-05-31
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多