在关于 如何创建 socket.io 多播组 的问题取得进展后,我发现制作房间是完成我需要的事情的好方法。
但是,如果没有额外的数据结构,了解所有房间会很棒。
是否可以从服务器套接字获取服务器上所有房间的列表?
原文由 pyramation 发布,翻译遵循 CC BY-SA 4.0 许可协议
在关于 如何创建 socket.io 多播组 的问题取得进展后,我发现制作房间是完成我需要的事情的好方法。
但是,如果没有额外的数据结构,了解所有房间会很棒。
是否可以从服务器套接字获取服务器上所有房间的列表?
原文由 pyramation 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如大家所说,在新版本的 socket.io (1.x) 中,可以在以下位置找到房间:
io.sockets.adapter.rooms
这将返回如下内容:
{
'qNADgg3CCxESDLm5AAAA': [ 'qNADgg3CCxESDLm5AAAA': true ],
'myRoom': [ 'qNADgg3CCxESDLm5AAAA': true,
'0rCX3v4pufWvQ6uwAAAB': true,
'iH0wJHGh-qKPRd2RAAAC': true ],
'0rCX3v4pufWvQ6uwAAAB': [ '0rCX3v4pufWvQ6uwAAAB': true ],
'iH0wJHGh-qKPRd2RAAAC': [ 'iH0wJHGh-qKPRd2RAAAC': true ]
}
我唯一想得到的房间是“myRoom”,所以我为此编写了以下函数:
function findRooms() {
var availableRooms = [];
var rooms = io.sockets.adapter.rooms;
if (rooms) {
for (var room in rooms) {
if (!rooms[room].hasOwnProperty(room)) {
availableRooms.push(room);
}
}
}
return availableRooms;
}
这让我有点困惑,希望这对您有所帮助!
原文由 gastonmancini 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2.7k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
2 回答1.3k 阅读
2 回答707 阅读✓ 已解决
2 回答1.8k 阅读
2 回答756 阅读✓ 已解决
简短的回答:
我分析
io
:我得到以下输出:
从单个客户
io.sockets.adapter.rooms
加入房间“public-alfred”后,包含: