有很多方法可以做到这一点。我会把你链接到this guide on using redis as a pub sub,但我会给你一个超级简短的介绍它的样子。
所以产卵两个集群在启动时,或然而,许多你想..
var aWorker = cluster.fork();
var bWorker = cluster.fork();
,那么你需要将其设置为监听它们各自的端口,所以使用net模块:
var server1 = require('net').createServer([options], function(connection) {
aWorker.send('ConnectionEvent' , connection);
}).listen(80); //HTTP/WS
var server2 = require('net').createServer([options], function(connection) {
bWorker.send('ConnectionEvent' , connection);
}).listen(443); //HTTPS/WSS
集群中的过程:
var app_server = require('express')().listen(0, 'localhost');
var io = require('socket.io')(app_server);
io.adapter(require('socket.io-redis')({ host: '127.0.0.1', port: **REDIS PORT** });
io.on('connection', function (socket) {
//Rest of your io server code
...
process.on('message' , function(message, connection) {
if(connection && message === 'ConnectionEvent') {
app_server.emit('connection', connection);
connection.resume();
}
}
相信Socket.io的房间功能交流会在第二点上完成你想要做的事情,而不是依靠创建新的工作任务。这只是我的看法。