У меня есть червь времени на поиск документации по io.sockets.clients()
, поэтому я могу получить идентификаторы подключенных клиентов, имя пользователя и т. Д. Когда я alert(io.sockets.clients().length.toString());
, он дает мне правильный номер, но мне нужно найдите структуру массива. Есть ли способ узнать массив без знания структуры? Много как php's print_r()
?Socket.IO подключился к списку клиентов
код до сих пор:
socket.on('switchRoom', function(newroom){
var clients = io.sockets.clients();
socket.emit('users', clients);
});
socket.on('users', function(usernames) {
for(var client in usernames) {
console.log(usernames[client].id + ' disconnected: ' + usernames[client].disconnected)
}
});
Я получаю эту ошибку после того, как «switchRoom» обжигают
/home/ed/socket/chat/node_modules/socket.io/lib/parser.js:81
data = JSON.stringify(ev);
^
TypeError: Converting circular structure to JSON
at Object.stringify (native)
at Object.encodePacket (/home/ed/socket/chat/node_modules/socket.io/lib/parser.js:81:19)
at Socket.packet (/home/ed/socket/chat/node_modules/socket.io/lib/socket.js:202:21)
at Socket.emit (/home/ed/socket/chat/node_modules/socket.io/lib/socket.js:351:15)
at Socket.<anonymous> (/home/ed/socket/chat/app.js:58:10)
at Socket.$emit (events.js:64:17)
at SocketNamespace.handlePacket (/home/ed/socket/chat/node_modules/socket.io/lib/namespace.js:331:20)
at Manager.onClientMessage (/home/ed/socket/chat/node_modules/socket.io/lib/manager.js:436:38)
at WebSocket.onMessage (/home/ed/socket/chat/node_modules/socket.io/lib/transport.js:387:20)
at Parser.<anonymous> (/home/ed/socket/chat/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js:38:10)
я добавил мой текущий код, чтобы показать более подробно о том, что это происходит. Это делается на сервере (app.js), и ничего не пускается в консоль. –
Предполагаю, что первая часть находится на сервере, а вторая - на клиенте? 'io.sockets.clients()' возвращает массив объектов 'Socket'; вы не можете отправить их через Интернет клиенту. Вам нужно будет получить данные из имени пользователя и отправить, скажем, массив строк или что-то в этом роде. Вы используете 'socket.set' для установки имени пользователя? Если нет, как вы отслеживаете их? –
Я использую 'socket.set ('username', 'MyName')' и 'socket.set ('id', socket.id)' есть способ захватить множество vars, а затем, возможно, '.emit' в клиент? –