Socket io加入分布式架构的空间

时间:2016-01-30 04:54:12

标签: node.js sockets websocket socket.io

当客户端连接到一个套接字io服务器时,它很容易(连接)房间。

但是,如果我在一个数据中心分配套接字io服务器,其中两个客户端或连接到两个单独的套接字io服务器。

如何将它们添加到房间(加入)以便他们可以进行交流

Socket Server-01        Socket Server-02
      ^                        ^
      |                        |
      |                        |
      v                        v
   Client-01               Client-02

1 个答案:

答案 0 :(得分:0)

使用诸如socket.io-redis之类的socket.io适配器将允许您执行此操作。

  

通过使用socket.io-redis适配器运行socket.io,您可以运行   不同进程或服务器中的多个socket.io实例   所有人都可以相互广播和发送事件。

在每个socket.io节点上设置适配器之后,它就可以正常工作,无需进一步更改所需的代码。

我个人喜欢使用ioredis而非默认node_redis,因为我发现它更可靠。

var Redis = require('ioredis');
var redisAdapter = require('socket.io-ioredis');
var io = require('socket.io')();

io.adapter(redisAdapter({
  pubClient: new Redis('redis://:authpassword@127.0.0.1:6380/4'),
  subClient: new Redis('redis://:authpassword@127.0.0.1:6380/4'),
}));

io.on('connection', function(socket) {
  // do your thing.
});