命令行运行node server.js,打开127.0.0.1:3000,出现Maximum call stack size exceeded
报错。
服务端关键代码如下:
var userList = {};
...
io.sockets.on('connection', function (socket) {
var session = socket.id;
userList[session] = socket;
socket.emit('rs',userList);
})
客户端关键代码如下:
socket.on('rs',function(userList){
console.log(userList);
}
我试过传字符串没有问题,但是传这个JSON就不行了,为什么呢?是因为userList太大了吗?
补充:
刚刚按照下面的回答,试着把JSON转成字符串,结果发现还是报错TypeError: Converting circular structure to JSON
报错代码如下:
C:\PHPnow-1.5.6\htdocs\three.js\server.js:19
var demo = JSON.stringify(userList);
^
TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
at Namespace.<anonymous> (C:\PHPnow-1.5.6\htdocs\three.js\server.js:19:18)
at emitOne (events.js:115:13)
at Namespace.emit (events.js:210:7)
at Namespace.emit (C:\PHPnow-1.5.6\htdocs\three.js\node_modules\_socket.io@2.0.3@socket.io\lib\namespace.js:212:10)
at C:\PHPnow-1.5.6\htdocs\three.js\node_modules\_socket.io@2.0.3@socket.io\lib\namespace.js:180:14
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
既然字符串可以,那你把JSON序列化成字符串不就可以了。
检查代码有造成循环结构的操作吗,比如这样:
var selfish = {};
selfish.friend = selfish;
JSON.stringify(selfish);