socket.io - 在节点之间传递事件

标签 socket.io socket.io-redis

我受到了这个启发:http://socket.io/docs/using-multiple-nodes/#passing-events-between-nodes ,现在我想通过 redis adpter 同步我的两个 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)时 - 我看到“connection.js”。 test = 1',很好,但第二台服务器的控制台仍然干净。我希望第二个服务器(端口 4000)执行相同的操作(打印“connection = 1”)。

我做错了什么?您能举例说明如何使用适配器吗?

谢谢

最佳答案

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

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

关于socket.io - 在节点之间传递事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26506211/

相关文章:

javascript - 动态 JS channel 菜单链接问题

Swift SocketIO 客户端不保持连接

node.js - socket.io 获取所有已连接客户端数量的房间

php - Laravel Echo 服务器、Redis、Socket.IO : Can't seem to make them work

Socket.io - 使用多个节点

javascript - 将socket.io 存储在全局数组+ Node.js 中

node.js - 多 Node js 服务器与 socket.io-redis 相互通信不接收事件

javascript - Socket I - 它如何自动连接回服务器?

node.js + socket.IO - 套接字没有重新连接?

javascript - Socket.io 服务端回调