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



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

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

这两个包裹不同吗?如果是,有什么区别?什么时候用一个代替另一个?

Socket.io 的核心提交人Damien的简短回答

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

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


答案很长

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

@socket.io/redis-adapter

  1. 必须与socket.io服务器链接,并且必须为其提供发布订阅redis客户端。如下所示:
io.adapter(createAdapter(pubClient, subClient))
  1. 负责向其他服务器发送/从其他服务器接收socket.io命令

@socket.io/redis-emitter

  1. 无法与socket.io服务器链接,并且必须为其提供发布redis客户端。如下所示:
const emitter = new Emitter(pubClient);
  1. 仅负责将socket.io命令发送到其他服务器(具有相同redis数据库连接和通道密钥配置的@socket.io/redis-adapter适配器(

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

最新更新