我在发送对象数组时遇到了问题 socket 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;
});
所以当我尝试调试问题时,客户端代码中的数组中的所有对象都是空的。所以我可能猜测错误是套接字
如果问题太琐碎,请原谅我的无知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 ;
}
答案 0 :(得分:0)
我无法看到您的整个代码,因此我无法在其中找到错误,但我尝试编写类似的内容:
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 / parse,socket.io会为你做。你的错误在别的地方。
请告诉我们整个代码。