2

我在两台机器上有以下代码

 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'})
  1. 我怎么知道redis工作得很好。
  2. 如何将消息发送到连接在另一台服务器上的套接字。
4

2 回答 2

1

你不能。Socket.IO 需要粘性会话。套接字必须仅与原始进程通信。

文档

您可以让 socket.io 服务器相互通信以传递事件,但客户端必须继续与发起它的进程通信。

于 2015-12-14T18:11:38.190 回答
0

我有类似的问题,但我可以回答你的第一个问题。您可以在终端上使用该命令监控 redis 处理的所有命令:

redis-cli monitor

http://redis.io/commands/MONITOR

不幸的是,我无法进一步帮助您,因为即使两台服务器都向 redis 发送内容,我仍然遇到问题。

于 2016-02-19T11:20:15.167 回答