如何通过socket io发送一个对象数组?

我一直在通过套接字io发送对象数组遇到问题

我的服务器端代码

var addEntity = function(ent) { entityBag.push(ent); }; var entityBag = []; addEntity(new Circle({ x: Math.random() * 5000,//(i%20) * space, y: Math.random() * 5000,//Math.floor(i/20)*space, color: ['red', 'blue', 'green', 'yellow', 'purple', 'brown', 'violet'][Math.floor(Math.random()*7)], droplet: true })); socket.emit('updatePos',entityBag); 

和我的客户端代码

 var entityBag = []; socket.on('updatePos', function(msg) { entityBag = msg; }); 

所以当我试图debugging问题时,数组中的所有对象在客户端代码中都是空的。 所以我可能猜测错误是与套接字

如果问题太微不足道,请原谅我的无知

Cirlce类

 function Circle(attr) { attr = attr var x = attr.x; var y = attr.y; var color = attr.color ; var borderColor = attr.borderColor || 'black'; var droplet = attr.droplet ; } 

我不能看到你的整个代码,所以我不能find它的错误,但我试图写一些类似的东西:

server.js:

 'use strict'; const io = require('socket.io')(3000); var entityBag = []; var someObject = { x: Math.random() * 5000,//(i%20) * space, y: Math.random() * 5000,//Math.floor(i/20)*space, color: ['red', 'blue', 'green', 'yellow', 'purple', 'brown', 'violet'][Math.floor(Math.random()*7)], droplet: true } var anotherObject = { name: 'Utsav Mangal', color: ['red', 'blue', 'green', 'yellow', 'purple', 'brown', 'violet'], human: true, somekey: 'foo' } var addEntity = function(ent) { entityBag.push(ent); }; addEntity(someObject); addEntity(anotherObject); io.on('connection', function (socket) { socket.emit('updatePos', entityBag); }); console.log('Plain socket.io server started at port 3000'); 

client.js

 'use strict'; const socket = require('socket.io-client')('http://localhost:3000'); socket.on('updatePos', function(data) { console.log(data); }); 

您可以尝试与node server启动服务器和node client连接到它,一切工作正常。 你不必JSON.stringify /parsing,socket.io会为你做。 你的bug是在别的地方。 请告诉我们整个代码。