socket.io连接到多个进程
我正在尝试使用socket.io
和socket.io-redis
build立一个聊天服务器,这样我就可以在多个处理器/服务器上拥有这个进程了。
我遇到的问题是将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" }
我需要做些什么才能做到这一点?
io.on('connection', function (socket) { socket.join('public_room'); socket.on('join', function(data){ io.to('public_room').emit('test',{a:10}); }); });