加入不同命名空间中的同一个房间

时间:2018-04-05 09:17:09

标签: node.js socket.io

我正在使用socket.io v 2.0.4和 我有3个名字空间,它们之间没有关系。但有时候我需要以不同的名字加入套接字到同一个房间。有可能吗?

我看到了很多解决方案和帖子,但他们在socket.io v 2.0中没有帮助我。

使用socket.io-redis

const express = require('express') ;
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server);
const Redis = require('ioredis');
const redis = new Redis({host: 'localhost',port: 6379});

const redisAdapter = require('socket.io-redis');

io.adapter(redisAdapter(
  {
    host: 'localhost',
    port: 6379,
    requestsTimeout: 5000
  }
));

const t = io.of('/t') ;
const d = io.of('/d') ;

const dNamespace= (socket) => {
   socket.on('t.join',(tRoom)=>{
      t.adapter.remoteJoin(socket.id, tRoom, (err) => {
        if (err) return console.log(err) ;
      })
   })
};

d.on('connection',dNamespace) ;

1 个答案:

答案 0 :(得分:0)

您可以使用socket.io-redis进行远程连接

io.of('/namespace').adapter.remoteJoin('<my-id>', 'room1', (err) => {
  if (err) { /* unknown id */ }
  // success
});