我有一个使用集群的服务器,并使用socke.IO工作我正在使用粘性会话,但我的房间有问题(我不知道我的方式是否是最好的选择):集群实例化流程,每个流程都有特定数量的房间.
我将一些用户连接到房间(只有一个进程)的方法是使用路由,用户访问页面,当他尝试与Socket.io建立连接时,我检查URL并使用该信息插入他在一个房间里.
我的问题是使用集群实现此服务器我不能将用户插入特定的房间,因为有些房间只存在于特定的进程中,粘性会话将他放在另一个进程中.如何将用户置于另一个进程中的房间?此外,使用只能查看他在服务器中的进程路由,我想显示页面中的每个房间.
我已经阅读过有关Redis-Adapter的内容,但我没有在使用Socket.io + Cluster(Sticky-session + redis-adapter)+ rooms的github上找到解决方案.
按照我的代码分享我所做的事情:
//Cluster.Master with simplified Code
if (cluster.isMaster) {
var workers = [];
// Spawn workers.
for (var i = 0; i < num_processes; i++) {
spawn(i);
}
// Create the outside facing server listening on our port.
var server = net.createServer({
pauseOnConnect: true
}, function(connection) {
// We received a connection and need to pass it to the appropriate
// worker. Get …Run Code Online (Sandbox Code Playgroud)