我正在尝试使用socket.io
和socket.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"
}
我需要做些什么来实现这个目标?
答案 0 :(得分:0)
io.on('connection', function (socket) {
socket.join('public_room');
socket.on('join', function(data){
io.to('public_room').emit('test',{a:10});
});
});