当前位置: 首页 > 面试题库 >

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

薛博艺
2023-03-14
问题内容

很简单的问题。我正在使用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连接,但仍允许单个客户端处理,请参见下面的答案…。


问题答案:

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

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

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

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



 类似资料:
  • 非常简单的问题。我正在使用nodejs作为我的后端构建一个实时游戏,我想知道是否有任何信息可以说明哪个更可靠,哪个更高效?我在整个代码中大量使用Redis和Socket.io。所以我想知道我是否应该使用Socket.io的房间,还是使用redis的pub-sub会更好? 更新:刚刚意识到,您可能希望通过套接字使用redis发布/订阅有一个非常重要的原因。io房间。带插座。io室当您向侦听器发布时,

  • 从外观上看-似乎创建了一个对象的克隆。如果是这样,那么对于实现可克隆接口(只有不可变对象是新的,因为可变对象有引用复制)的关注,哪一个是最好的,为什么? 我昨天实现了克隆,然后意识到我必须为非字符串/首字母元素提供自己的修改。然后我被告知我现在正在使用的。这两个实现似乎都提供了类似的功能。 谢谢

  • 我正在设计一个数据库,该数据库将在Android using Room中实现,在阅读文档后,我发现没有关于使用Int或Long作为主键的建议。 在某些地方,它们使用int主键定义实体: 但是在其他地方,它说如果你想得到插入的最后一行的ID,“插入”方法返回一个长的。 如果@插入方法只接收到1个参数,它可以返回一个long,这是插入项的新rowId。如果参数是数组或集合,则应返回long[]或Lis

  • 问题内容: 通过它的外观- 似乎创建了一个对象的克隆。如果是这样的话,那么与实现Cloneable接口有关的担忧(只有不可变对象才是新对象,因为可变对象复制了引用)是最好的,为什么? 昨天我实现了cloneable,然后意识到我必须对非 String / Primative 元素提供自己的修改。然后,我被告知我正在使用哪个。两种实现似乎都提供了类似的功能。 谢谢 问题答案: Josh Bloch提

  • 问题内容: 我正在使用c / c 为osx和linux开发命令行界面可执行文件。该项目将链接到opencv。我应该使用libc 还是libstdc ++? 问题答案: 我会为每个操作系统使用本机库,即GNU / Linux上的libstdc 和Mac OS X上的libc 。 libc 在GNU / Linux上不是100%完整的,而libstdc 更完整时使用libc并没有真正的优势。另外,如果

  • 问题内容: 和CSS 和有什么不一样?我应该使用哪一个?为什么? 问题答案: 所有这些答案似乎都是不正确的。与直觉相反,在CSS 中不是pixel 。至少不是在简单的物理意义上。 从W3C,EM,PX,PT,CM,IN…阅读本文,了解如何为CSS发明一个“神奇的”单元。的含义因硬件和分辨率而异。(该文章是最新的,最新更新为2014-10。) 我自己的思考方式: px单位是CSS的魔术单位。它与当前