socket.io连接到多个进程

时间:2015-05-26 02:10:22

标签: javascript node.js redis socket.io

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

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

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

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"
}

我需要做些什么来实现这个目标?

1 个答案:

答案 0 :(得分:0)

io.on('connection', function (socket) { 
    socket.join('public_room');

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