Socket.io: 如何获得所有房间

创建于 2014-11-21  ·  9评论  ·  资料来源: socketio/socket.io

1630 已经添加了对.clients([room], fn);支持,以获取房间中的套接字 ID 列表。 我向@FREEZX发送了一个 PR,以添加方法.roomClients([socketid],fn)以及获取套接字 ID 所在的房间列表。

这在 0.9.x 中使用io.sockets.manager.roomClients[socket_id]是可能的,并且当与 RedisStore 一起使用时,它曾经可以跨多个节点工作。

也可以使用io.sockets.manager.rooms获取所有房间的哈希值,但我在 1.x 中看不到它。 有io.sockets.adapter.rooms但就我所见,它不能跨节点工作。

可以使用上述两个函数来获取这些数据。 首先获取 room '' 中的所有套接字 ID,然后反复调用 roomClients 以获取房间并合并它们,但这意味着对 roomClients 进行 n 次调用,就像读取 0.9.x 中的io.sockets.manager.rooms对象一样简单

enhancement

最有用的评论

我使用 io.sockets.adapter.rooms

所有9条评论

:+1:

+1 在这一点上。 如果没有列出房间的能力,你甚至无法制作一个像样的聊天系统。

(和)

:+1:

有没有人有办法进入所有房间?

https://github.com/socketio/socket.io-redis/pull/168关闭

io.adapter.allRooms(function (err, rooms) {
  console.log(rooms); // an array containing all rooms (accross every node)
});

我正在使用 2.0.4 并且 io.adapter.allRooms 不起作用。 任何的想法?

我使用 io.sockets.adapter.rooms

@wangdalang能否请您显示代码示例并链接到文档。 我好像找不到

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

shivajivarma picture shivajivarma  ·  37评论

shi-yuan picture shi-yuan  ·  129评论

darrachequesne picture darrachequesne  ·  51评论

fadaytak picture fadaytak  ·  42评论

ForgeableSum picture ForgeableSum  ·  48评论