我在两台机器上有以下代码
var server = require('http').createServer(app);
io = require('socket.io')(server);
var redisAdapter = require('socket.io-redis');
io.adapter(redisAdaptebr({host: config.redis.host, port: config.redis.port}));
server.listen(config.port, function () {
并且我将连接到这两台计算机的每个客户端的socket.id存储在中央数据库上,套接字的ID被保存,并且在同一服务器上发送的事件可以正常工作,但是当我尝试向其他服务器的套接字发送消息时却没有工作..
subSocket = io.sockets.connected[userSocketID];
subSocket.emit('hello',{a:'b'})
最佳答案
你不能Socket.IO需要粘性 session 。套接字必须仅与原始进程进行通信。
docs
您可以让socket.io服务器相互通信以传递事件,但是客户端必须继续与它起源的过程进行对话。
关于node.js - 如何在多个服务器上使用socket.io-redis?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34273256/