gpt4 book ai didi

javascript - socket.io 仅向房间 A 和 B 中的用户广播

转载 作者:IT老高 更新时间:2023-10-28 23:11:24 26 4
gpt4 key购买 nike

是否可以将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com