在节点之间传递事件

既然您有多个Socket.IO节点可以接受连接,那么如果您想向每个人(甚至是某个 房间 中的每个人)广播事件,那么就需要在进程或计算机之间传递消息。

负责路由消息的接口就是我们所称的Apdapter。您可以在 socket.io-adapter 上实现自己的(通过从socket.io-adapter继承),也可以使用我们在redis上提供的:socket.io-redis:

  1. const io = require('socket.io')(3000)
  2. const redis = require('socket.io-redis');
  3. io.adapter(redis({host:"localhost",port:6379}));

如下调用:

  1. io.emit('hi',"all sockets")

将通过redis的发布/订阅机制广播到每个节点。

注意:使用Redis适配器时仍然需要粘性会话。

如果您想通过non-socket.io进程将消息传递给它,您应该考虑“从外部世界发送消息”