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

socket.io-在节点之间传递事件,socket.io,socket.io-redis,Socket.io,Socket.io Redis,我受此启发:,现在我想通过redis adpter同步我的两个socket.io实例 这是我的代码: //第一台服务器(server1.js) var io=require('socket.io')(3000); var redis=require('socket.io redis'); 适配器(redis({host:'localhost',端口:6379})); var检验=0; io.on('连接',函数(套接字){ 测试+=1; console.log(“connection.test=

我受此启发:,现在我想通过redis adpter同步我的两个socket.io实例

这是我的代码:

//第一台服务器(server1.js)
var io=require('socket.io')(3000);
var redis=require('socket.io redis');
适配器(redis({host:'localhost',端口:6379}));
var检验=0;
io.on('连接',函数(套接字){
测试+=1;
console.log(“connection.test=“+test”);
});
//第二台服务器(server2.js)
var io=require('socket.io')(4000);
var redis=require('socket.io redis');
适配器(redis({host:'localhost',端口:6379}));
var检验=0;
io.on('连接',函数(套接字){
测试+=1;
console.log(“connection.test=“+test”);
});
当我连接到server1.js(端口3000)时,我看到了“连接”。test=1',这很好,但是第二台服务器的控制台仍然是干净的。我希望第二台服务器(端口4000)也这样做(打印“connection=1”)

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


谢谢

如果您只连接到
服务器1:3000
,那么
io.on('connection',…)
将无法在
服务器2:4000
上触发-毕竟,您没有连接到该服务器


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

听起来不错。有两件事需要尝试。尝试将数据附加到套接字。ex socket.username='ted'。如果这不起作用,您可以安装redis pub/sub,并为节点创建一个类似适配器的通信通道,这样您就可以共享非socket.io消息。io@1.4.5在bot服务器和客户端中。在我的代码中添加打印连接的套接字总数的时间。我在一台服务器上得到了正确的数字,但在另一台服务器上我只得到了0。下面是我用于计数检查的内容。对象.键(io.套接字.已连接).长度)