2013-07-31 6 views
2

я проблема, я хочу, чтобы получить ТОЛЬКО номер IDSocket.io как получить номер ID

Я знаю о io.sockets.manager.rooms но он возвращает объект:/

В коде (я отправить список комнаты для клиента, и он проверяет идентификатор)

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)) 

ответ

1

Я не 100% уверен, что вам нужно здесь. Вы хотите вернуть массив имен комнат? Если это так, вы можете просто получить ключи от объекта, возвращенного io.sockets.manager.rooms, например. используя вспомогательную функцию, представленную Underscore:

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

EDIT: Я использовал здесь подчеркивания, но вы также можете написать свои собственные функции клавиш, с помощью цикла через свойства объектов, с чем-то вроде этого:

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; 
} 

Обратите внимание, что это может пропустить некоторые кромки, но вы получаете идею

+0

Да Да, я имею в виду! но у меня проблема с вашим кодом, я получаю ошибку: 'ReferenceError: _ не определен' – Adacho

+0

Я взял [Underscore] (http://underscorejs.org/) в качестве примера вспомогательной библиотеки, чтобы получить функцию« ключей », вы Вам нужно будет добавить эту библиотеку в свой проект, чтобы использовать ее. – axelcdv

+0

Я меняю небольшую функцию, и у меня есть: – Adacho

Смежные вопросы