我一直在寻找有关为Node.js Socket.IO安装设置多服务器群集的帮助。这就是我想要做的事情:
n
个节点服务器,以及Socket.IO io.connect
连接到该1个VIP,然后将其过滤到负载均衡器后面的服务器之一。例如 - 如果我们在LB1(F5)后面有服务器A,服务器B和服务器C,并且用户A连接到服务器A,则用户B连接到服务器B,用户C连接到服务器C.
在“聊天”场景中 - 基本上如果从服务器A向message
事件发出消息 - 服务器B和C也应该将消息发送到其连接的客户端。我读到这可以使用socket-io.redis
,但它需要一个Redis框 - 应该安装哪个服务器?如果所有服务器都连接到同一个Redis框 - 这是否会自动运行?
var io = require('socket.io')(server);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));
非常感谢任何帮助,谢谢!
答案 0 :(得分:5)
这个问题的答案是您必须设置一个位于SocketIO群集之外的Redis服务器 - 并且所有节点都连接到它。
然后你只需在代码的顶部添加它,它就可以毫无问题地神奇地工作。
var io = require('socket.io')(server);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));