我正在使用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) ;
答案 0 :(得分:0)
您可以使用socket.io-redis进行远程连接
io.of('/namespace').adapter.remoteJoin('<my-id>', 'room1', (err) => {
if (err) { /* unknown id */ }
// success
});