2016-04-08 49 views
3

我正在使用socket.io构建应用程序socket.io可以处理的最大房间数是多少?

我使用的是socket.io的房间功能,有5个“主题”用户可以订阅。每个在该主题中广播的消息都有一个消息类型,其中有100个。用户只会收到它们允许接收的消息类型,可能在30到70之间。

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

感谢您的帮助。

+0

@Baronz - 这个问题并不完全一样。这个问题是关于您可以在服务器上维护多少个房间,而不是关于您连接了多少个套接字。 – jfriend00

回答

8

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

一个房间只需要一点点内存来保存每个房间的套接字阵列。除此之外,没有额外的成本。此外,如果您的替代方案是为每个主题维护一个套接字数组,那么您的替代方案可能不会为您节省太多或其他任何东西。

我的问题:是否可以为每个主题创建一个空间+消息 类型的组合,这将是5 x 100个房间?

是的,这很容易实现。

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

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

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

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

+0

优秀的答案,非常感谢! – simbro

相关问题