当我阅读Socket.io文档中的这篇文章时
我发现以下两个包@socket.io/redis-adapter
和@socket.io/redis-emitter
用于向其他服务器上的客户端发送数据。
这两个包裹不同吗?如果是,有什么区别?什么时候用一个代替另一个?
Socket.io 的核心提交人Damien的简短回答
适配器是Socket.IO服务器内的一个组件,而发射器可以在另一个进程/服务中使用。
文档中有两张图解释了每个包的职责
答案很长
它们非常相似,有以下两个区别:
@socket.io/redis-adapter
- 必须与
socket.io
服务器链接,并且必须为其提供发布和订阅redis客户端。如下所示:
io.adapter(createAdapter(pubClient, subClient))
- 负责向其他服务器发送/从其他服务器接收
socket.io
命令
@socket.io/redis-emitter
- 无法与
socket.io
服务器链接,并且必须为其提供发布redis客户端。如下所示:
const emitter = new Emitter(pubClient);
- 仅负责将
socket.io
命令发送到其他服务器(具有相同redis数据库连接和通道密钥配置的@socket.io/redis-adapter
适配器(
注意:这些差异适用于所有插座io适配器和发射器(例如@socket.io/mongo-adapter
和@socket.io/mongo-emitter
(