Socket.io Redis 适配器和 Redis 发射器有什么区别

Amj*_*mar 2 socket.io socket.io-redis

当我从Socket.io文档中阅读这篇文章时

我发现以下两个包@socket.io/redis-adapter用于@socket.io/redis-emitter将数据发送到其他服务器上的客户端。

这两个包有区别吗?如果是,有什么区别?何时使用其中一种而不是另一种?

Amj*_*mar 8

Socket.io 核心提交者Damien \xe2\x80\x94的简短回答

\n
\n

适配器是 Socket.IO 服务器内部的一个组件,而发射器可以在另一个进程/服务中使用。

\n
\n

文档中有两个图表解释了每个包的职责

\n
\n

长答案

\n

它们非常相似,但有以下两个区别:

\n

@socket.io/redis-adapter

\n
    \n
  1. 必须与服务器链接socket.io,并且必须为其提供发布订阅的redis客户端。像下面这样:
  2. \n
\n
io.adapter(createAdapter(pubClient, subClient))\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 负责向/从其他服务器发送/接收socket.io命令。
  2. \n
\n

@socket.io/redis-emitter

\n
    \n
  1. 无法与socket.io服务器链接,并且您必须为其提供发布redis客户端。像下面这样:
  2. \n
\n
const emitter = new Emitter(pubClient);\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. socket.io只负责向其他服务器发送命令(具有@socket.io/redis-adapter具有相同 Redis 数据库连接和通道密钥配置的适配器)
  2. \n
\n

注意:这些差异适用于所有 socket.io 适配器和发射器(例如@socket.io/mongo-adapter@socket.io/mongo-emitter

\n