2

我受到了启发:http ://socket.io/docs/using-multiple-nodes/#passing-events-between-nodes ,现在我想通过 redis 适配器同步我的两个 socket.io 实例。

这是我的代码:

//FIRST SERVER (server1.js)


var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));

var test = 0;

io.on('connection', function (socket) {
    test+=1;
    console.log("connection. test = " + test);
});

//SECOND SERVER (server2.js)


var io = require('socket.io')(4000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));

var test = 0;

io.on('connection', function (socket) {
    test+=1;
    console.log("connection. test = " + test);
});

当我连接到 server1.js(端口 3000)时 - 我看到了“连接。test = 1',很好,但是第二台服务器的控制台还是干净的。我希望第二台服务器(端口 4000)做同样的事情(打印 'connection = 1')。

我做错了什么?你能告诉我一个如何使用适配器的例子吗?

谢谢

4

1 回答 1

5

如果您只连接到server1:3000,则io.on('connection', ...)无法触发server2:4000- 毕竟,您没有连接到该服务器。

每个客户端将仅连接到您的一个服务器。如果您不使用连接到不同服务器的 Redis 适配器客户端将无法通信。现在使用 Redis 适配器,服务器可以了解彼此的客户端,并且可以向所有服务器的所有连接的客户端广播消息。

于 2014-10-27T04:36:21.340 回答