这更像是一个假设的问题,所以我无法真正展示任何代码示例。想象一下,如果像Twitter这样的网站想通过网络套接字/ Socket.io在Tweet上实时更新统计数据。在性能方面,哪种方法最好?
或许它取决于应用程序的规模?如果你有一个只有少数用户的Twitter克隆,也许1会更好,而我认为在Twitter的情况下2更好,因为它是数百个“房间”与数百万信号/秒的问题?如果是这种情况,那么一种方法在哪一方面优先于另一种呢?
答案 0 :(得分:1)
在规模上,您不希望向他们没有要求且没有任何用途的客户发送消息。想象一下,Twitter客户端正在接收实时发送的每条推文。这可能会压倒客户端,这意味着服务器会向每个连接的客户端发送每条推文。这显然无法在服务器端或客户端扩展。
所以选项1已经出局。
适当的解决方案是服务器仅向客户端发送特别感兴趣的消息。这适用于任何规模。我不知道你的选项2是否是那个,因为房间只是一个用于建立连接组的工具,你可以发送相同的信息 - 他们并不真正决定谁得到了什么信息 - 这个逻辑必须被融入你的服务器代码。
对于类似Twitter的服务,您似乎必须拥有一个系统,您的服务器可以轻松地告诉哪些用户对此特定新消息感兴趣。这可能是出于多种原因,例如他们跟随作者,他们正在关注消息中出现的主题标签,消息中提到了它们等等......这是服务器端逻辑,而不仅仅是简单的房间。