socket.io可以处理多less个房间?

我正在使用socket.io构build一个应用程序

我正在使用socket.io的房间function,有5个“主题”用户可以订阅。 在该主题中广播的每个消息都具有消息types,其中有100个。用户将只接收它们允许接收的types的消息,该消息可以在30到70之间。

我的问题是:为每个话题+消息types组合创build一个空间是可行的,这个组合将是5×100个房间? 请问socket.io的性能如何,还是有更好的方法来解决这个问题? 将单个消息发送到每个单独的套接字,而不是使用房间,会更好?

谢谢你的帮助。

socket.io房间是一个轻量级的数据结构。 它们只是与该房间相关的一系列连接。 您可以拥有任意数量(在正常的内存使用限制内)。 没有重量级的东西,使资源方面的房间很昂贵。 这只是希望与该房间关联的套接字列表。 发射到房间只不过是通过房间中的一系列sockets迭代并发送给每个房间。

一个房间只需要一点点的内存,以保持在每个房间的socketsarrays。 除此之外,没有额外的成本。

此外,如果您的select是为每个主题维护一个套接字数组,那么您的select可能不会节省您太多或什么。

我的问题是:为每个话题+消息types组合创build一个空间是可行的,这个组合将是5×100个房间?

是的,这很容易实现。

请问socket.io的性能如何,还是有更好的方法来解决这个问题?

有这么多的房间没有问题。 它是否performance良好完全取决于你正在做什么与许多房间。 如果你正在向很多房间发送大量消息,而每个房间都有很多套接字,那么如果有性能问题,你就必须进行基准testing。

将单个消息发送到每个单独的套接字,而不是使用房间,会更好?

不会有明显的差别。 房间只是一个便利的工具。 发射到一个房间,只需要遍历房间中的每个sockets,然后发送给它 – 就像你提议的那样。 也可以使用内置的房间function,而不是自己重新实现。