2013-02-08 2 views
2

я сделать игру, и я хочу, чтобы создавать комнаты 2-пользователя, когда я пытаюсь получить число пользователейsocket.io не удается получить количество клиентов в комнате

io.sockets.emit('roomUsers', io.sockets.clients(openRoom).lenght); 

node.js аварий

Это журнал я получаю, я понятия не не то, что это значит:

/Users/ilya/game-app-1/node_modules/socket.io/lib/parser.js:75 
     data = JSON.stringify(ev); 
       ^
TypeError: Converting circular structure to JSON 
    at Object.stringify (native) 
    at Object.exports.encodePacket (/Users/ilya/game-app-1/node_modules/socket.io/lib/parser.js:75:19) 
    at SocketNamespace.packet (/Users/ilya/game-app-1/node_modules/socket.io/lib/namespace.js:154:23) 
    at SocketNamespace.emit (/Users/ilya/game-app-1/node_modules/socket.io/lib/namespace.js:188:15) 
    at Socket.<anonymous> (/Users/ilya/game-app-1/app.js:101:14) 
    at Socket.EventEmitter.emit [as $emit] (events.js:96:17) 
    at SocketNamespace.handlePacket (/Users/ilya/game-app-1/node_modules/socket.io/lib/namespace.js:335:22) 
    at Manager.onClientMessage (/Users/ilya/game-app-1/node_modules/socket.io/lib/manager.js:488:38) 
    at WebSocket.Transport.onMessage (/Users/ilya/game-app-1/node_modules/socket.io/lib/transport.js:387:20) 
    at Parser.<anonymous> (/Users/ilya/game-app-1/node_modules/socket.io/lib/transports/websocket/hybi-16.js:39:10) 
+0

Вы можете распечатать ev и поделиться здесь - контент, скорее всего, недействителен JSON (вы также можете проверить это на jsonlint) –

+0

@alihaider что такое ev? – ilyo

+0

data = JSON.stringify (ev); // ev - это то, что вы переходите к JSON.stringify - можете ли вы поделиться содержимым ev –

ответ

1

JSON.stringify() не может преобразовать объекты, имеющие круглые ссылки. Каким бы ни был «ev», он каким-то образом ссылается внутри себя.

Узлы DOM, например, имеют ownerDocument s, что относится к document. document заканчивается ссылкой на document.body.ownerDocument.

1

Это означает, что он пытается преобразовать объект в JSON и есть элемент вниз дерева, указывая на один из его родитель. Это создаст бесконечно глубокий json-файл из-за рекурсии.