socket.io无法获得房间内的客户端数量

时间:2013-02-08 18:41:42

标签: node.js socket.io

我正在制作一款游戏,当我尝试获取用户数时,我想创建2个用户的房间

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)

2 个答案:

答案 0 :(得分:1)

这意味着它正在尝试将对象转换为json,并且树中有一个成员指向其中一个父对象。由于递归,这将创建一个无限深的json文件

答案 1 :(得分:1)

JSON.stringify()无法转换具有循环引用的对象。无论'ev'是什么,它都以某种方式引用自身。

例如,

DOM节点有ownerDocument个,它引用documentdocument最终通过document.body.ownerDocument引用自身。