作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
是否可以将 socket.io 广播给所有在房间 A 和房间 B 中的命名空间用户,而不是只在房间 A 或房间 B 中的用户?
如果没有,我将如何自己实现?有没有办法检索给定房间中的命名空间中的所有用户?
我正在 Node 中使用 socket.io 1.0
编辑:如果没有 native 方法,我将如何创建自己的语法,例如:socket.broadcast.in('room1').in('room2').emit(...)
?
最佳答案
您可以使用 (ref How to update socket object for all clients in room? (socket.io) ) 查找房间的所有用户
var clients = io.sockets.adapter.room["Room Name"]
因此,对于您的 2 个房间的花名册列表,给定两个数组,您可以使用类似此处的答案计算交集(引用:Simplest code for array intersection in javascript)
最后,您可以获取两个房间中的用户列表并使用 (ref: How to update socket object for all clients in room? (socket.io)) 发出事件
//this is the socket of each client in the room.
var clientSocket = io.sockets.connected[clientId];
//you can do whatever you need with this
clientSocket.emit('new event', "Updates");
另一种方法是拥有隐藏房间,您可以在其中维护所有房间的组合,并在幕后将用户添加到这些房间,然后您可以简单地向这些隐藏房间发射。但这会遇到指数增长问题。
关于javascript - socket.io 仅向房间 A 和 B 中的用户广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31317667/
我是一名优秀的程序员,十分优秀!