小编Tia*_*bre的帖子

如何处理带有集群的Socket.IO房间?

我有一个使用集群的服务器,并使用socke.IO工作我正在使用粘性会话,但我的房间有问题(我不知道我的方式是否是最好的选择):集群实例化流程,每个流程都有特定数量的房间.

  • 服务器
    • 过程1
      • 会议室1
      • 室2
      • N室
    • 过程2
      • 会议室1
      • 室2
      • N室

我将一些用户连接到房间(只有一个进程)的方法是使用路由,用户访问页面,当他尝试与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)

javascript websocket node.js socket.io node-cluster

11
推荐指数
1
解决办法
1000
查看次数

标签 统计

javascript ×1

node-cluster ×1

node.js ×1

socket.io ×1

websocket ×1