gpt4 book ai didi

javascript - Socket.io如何获取房间ID

转载 作者:行者123 更新时间:2023-11-28 01:54:13 28 4
gpt4 key购买 nike

我有问题,我想获取唯一房间id

我知道 io.sockets.manager.rooms 但它返回对象:/

在代码中(我将房间列表发送给客户,他检查 id)

io.sockets.on('connection', function(socket) {

socket.join('main');
socket.emit('start',io.sockets.manager.roomClients[socket.id]);

});

和客户:

var socket = io.connect('http://localhost:3250');                           
socket.on('start', function(data) {
panel.innerHTML = data;
}

解决方案是:

 var keys = function( object ) {
if ( !(object && typeof object === 'object') ) {
return null;
}
var result = [];
for (var key in object) {
if (object.hasOwnProperty(key)) {
result.push(key)
}
}
return result;
}

var obiekt = io.sockets.manager.rooms;

socket.emit('rooms', keys(obiekt))

最佳答案

我不能 100% 确定您在这里需要什么。你想返回一组房间名称吗?如果是这样,您可以从 io.sockets.manager.rooms 返回的对象中获取 key ,例如使用 Underscore 提供的辅助函数:

socket.emit('rooms', _.keys(io.sockets.manager.rooms) );

编辑:我在这里使用了 Underscore,但您也可以通过循环遍历对象属性来编写自己的键函数,如下所示:

var keys = function( object ) {
if ( !(object && typeof object === 'object') ) {
return null;
}
var result = [];
for (var key in object) {
if (object.hasOwnProperty(key)) {
result.push(key)
}
}
return result;
}

请注意,这可能会遗漏一些边缘情况,但您明白了

关于javascript - Socket.io如何获取房间ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17966300/

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