gpt4 book ai didi

javascript - 在 socket.io 中获取套接字的空间

转载 作者:行者123 更新时间:2023-11-30 09:45:52 25 4
gpt4 key购买 nike

如何检索套接字所属的房间?我正在使用 socket.io 版本 1.4

我尝试使用 this.socket.adapter.rooms 但我在 chrome 控制台中收到此错误:无法读取未定义的属性“房间”

在我的客户端代码中我有这个方法:

send(msg) {
if(msg != ''){
var clientInfo = [];
clientInfo.push(msg);
clientInfo.push(socket.id);
clientInfo.push(this.socket.adapter.rooms);
socket.emit('message', clientInfo);
}
}

在我的服务器端:

socket.on('message', function(clientInfo){
var clientmessage = clientInfo[0];
var clientid = clientInfo[1];
var clientroom = clientInfo[2];
io.to(clientroom).emit('messageSent', clientmessage);
});

最佳答案

服务器端,您可以获得一个 socket 所在房间的列表:

socket.rooms

客户端,套接字不知道它在什么房间。房间的整个概念是服务器端的概念,所有数据结构都在那里维护。如果客户端想知道它在哪个房间,它要么必须跟踪它请求成为哪个房间的成员,要么必须询问服务器它在哪个房间。

服务器端 socket.rooms 结构有一个奇怪之处。它显然不是实时更新的。如果您执行 socket.join("someRoom") 然后立即查看 socket.rooms,您将不会看到列出的 someRoom 名称。但是,如果您查看 process.nextTick()setTimeout(),您将在 socket.rooms 中看到它。我没有深入研究 socket.io 源代码来弄清楚为什么会这样,但显然有些东西只是异步更新。

关于javascript - 在 socket.io 中获取套接字的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38918599/

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