socket.io广播没有监听器会消耗资源吗?

时间:2016-06-03 18:35:36

标签: node.js sockets websocket socket.io

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

当收到消息时,接收socket.io代码解压缩消息,然后将其广播给任何本地侦听器。如果没有本地听众,那么当时就没有什么可以做的。然后消息被垃圾收集。

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