小编典典

我应该使用什么?Socket.io房间还是Redis pub-sub?

redis

很简单的问题。我正在使用nodejs作为后端构建实时游戏,我想知道是否有任何信息可用于确定哪个更可靠,哪个更有效?我在整个代码中都大量使用Redis和Socket.io。所以我想知道我是否应该使用Socket.io的房间,还是最好使用redis的pub-
sub

更新: 刚意识到有一个非常重要的原因,为什么您可能想在socket.io房间中使用redis pub /
sub。使用Socket.io房间,当您发布给侦听器时,(浏览器)客户端会接收消息,而redis实际上是(重新分配到服务器上的)客户端接收消息。因此,如果您想通知所有(服务器)客户端特定于每个客户端的信息,并且可能在传递给浏览器客户端之前进行一些处理,那么最好使用Redis。使用redis可以触发一个事件以生成每个用户的个人数据,就像使用socket.io一样,您实际上必须一次生成所有用户的唯一数据,然后遍历它们并发送给他们他们的个人数据,这几乎破坏了房间的目的,至少对我来说。

不幸的是,出于我的目的,我暂时仍然使用redis。

更新2: 最终开发了一个插件,仅使用2个redis连接,但仍允许单个客户端处理,请参见下面的答案…。


阅读 382

收藏
2020-06-20

共1个答案

小编典典

如果所有客户端都可以直接访问redis,那么Redis pub / sub非常有用。如果您有多个节点服务器,则一台服务器可以向另一台服务器发送消息。

但是,如果您在浏览器中也有客户端,则需要其他一些东西来将数据从服务器推送到客户端,在这种情况下,socket.io很棒。

现在,如果将socket.io与Redis存储一起使用,socket.io将在内部使用Redis pub /
sub在服务器之间传播消息,并且服务器会将消息传播到客户端。

因此,使用带Redis存储库配置的socket.io的socket.io房间对您来说可能是最简单的。

2020-06-20