【问题标题】:socket.io connect to multiple processessocket.io 连接到多个进程
【发布时间】:2015-05-26 02:10:21
【问题描述】:

我正在尝试使用socket.iosocket.io-redis 设置聊天服务器,以便可以在多个处理器/服务器上进行处理。

我在将socket.io-redis 集成到已经在一个服务器上运行一个进程的系统中时遇到问题。当我使用:pm2 start chat.js -i max 将进程集群到两个处理器上时。 Socket.io 无法再保持连接。

为了解决这个问题,我读到我需要使用redis,所以我安装了redis并且它正在运行,根据socket.io-redis docs我需要做的就是:

var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));

所以,我采取了这样的做法:

var io = require('socket.io')(3032);
var redis = require('socket.io-redis');

io.adapter(redis({host: 'localhost', port: 6379}));

io.on('connection', function(socket){
    socket.broadcast.on('Message', function(data){
        data = JSON.parse(data);
        socket.to(data.room).emit('Message', data.message);
    });
});

当我在无法连接的浏览器上运行时,我得到了这个:

{
    "code":1,
    "message":"Session ID unknown"
}

我需要做什么才能让它工作?

【问题讨论】:

  • 你有没有得到这个工作?
  • @PaulFitzgerald 不,我没有。

标签: javascript node.js redis socket.io


【解决方案1】:
io.on('connection', function (socket) { 
    socket.join('public_room');

    socket.on('join', function(data){
        io.to('public_room').emit('test',{a:10});
    });     
});

【讨论】:

  • 请解释您的答案以便更好地理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
  • 2018-02-21
  • 2020-08-05
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 2016-12-14
相关资源
最近更新 更多