gpt4 book ai didi

node.js - 如何获取房间列表

转载 作者:太空宇宙 更新时间:2023-11-03 23:37:38 25 4
gpt4 key购买 nike

如何获取最新版本(v1.3.7)socket.io中的房间列表?

io.nsps['/namespace'].adapter.rooms

将返回类似这样的内容:

{ 
mIfp3VIpt103xS3RAAAD: { mIfp3VIpt103xS3RAAAD: true },
'9XaViM2Q-A1NGziRAAAE': { '9XaViM2Q-A1NGziRAAAE': true },
science: { '9XaViM2Q-A1NGziRAAAE': true },
'2FopECkAq5Z4AIHMAAAF': { '2FopECkAq5Z4AIHMAAAF': true },
math: { '2FopECkAq5Z4AIHMAAAF': true },
s3JRFhNUz1Tz9apeAAAH: { s3JRFhNUz1Tz9apeAAAH: true }
}

显然,那里唯一的房间是科学数学
我怀疑其他的都是socket id。

我如何才能只获取科学数学作为房间列表?

最佳答案

Socket.io 将为每个连接的套接字保留一个开放的空间,以便向单个套接字发送消息:socket.broadcast.to(id).emit('我的消息', msg)

您可以保留已连接套接字 ID 的列表:

var cached = []
io.on('connection', function(socket) {
if(cached.indexOf(socket.id) === -1)
cached.push(socket.id)
})

不要忘记在套接字断开连接时删除它们

然后,减少房间列表:

var rooms = io.nsps['/namespace'].adapter.rooms
var realRooms = {}
for(var i in rooms) {
if(~cached.indexOf(i)) {
realRooms[i] = rooms[i]
}
}

可能还有其他方法可以做到这一点,但这是我想到的第一个。

关于node.js - 如何获取房间列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29893040/

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