如何使用最新版本的Socket.io查找房间内的所有插座

时间:2018-04-26 14:29:56

标签: javascript node.js socket.io

所以,使用socket.io 版本< 1.0 你可以使用:

var clients = io.sockets.clients('room');

获取房间内的所有插座'

然而现在使用最新版本的socket.io这是不可能的,我还没有找到适用于最新版本的解决方案,我不希望降级版本来运行我的应用程序。

3 个答案:

答案 0 :(得分:0)

您可以使用套接字Redis Adapter来管理SocketIO会议室。

const io = require('socket.io')(3000);
const redisAdapter = require('socket.io-redis');
io.adapter(redisAdapter({ host: 'localhost', port: 6379 }));

io.on('connection', function(client) {
    //Get allRooms by Redis Adapter
    io.of('/').adapter.allRooms((err, rooms) => {
        for (let room of rooms) {
             //Handle your room
        }
    })
})

希望这有帮助!

答案 1 :(得分:0)

setInterval(function() { 
 // do something
}, 4000);

似乎可以做到这一点!

答案 2 :(得分:0)

根据socket.io 2.0 docs

io.in('room').clients((error, clients) => {
  if (error) throw error;
  console.log(clients); // => [Anw2LatarvGVVXEIAAAD]
});

并获取客户端ID的套接字:

io.sockets.sockets[client]

(是,是2次套接字)