Javascript 如何通过套接字io发送对象数组?
我在通过发送对象数组时遇到了一个问题 套接字io 我的服务器端代码Javascript 如何通过套接字io发送对象数组?,javascript,node.js,socket.io,Javascript,Node.js,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)*
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;
});
还有我的客户端代码
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;
});
因此,当我尝试调试该问题时,客户端代码中数组中的所有对象都是空的。所以我可能猜错误出在套接字上
如果这个问题太琐碎,请原谅我的无知
循环类
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 ;
}
我看不到您的全部代码,所以我找不到其中的bug,但我尝试编写类似的代码: 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);
});
您可以尝试使用节点服务器
启动服务器,使用节点客户端
连接服务器,一切正常。您不必使用JSON.stringify/parse,socket.io将为您完成这项工作。你的虫子在别的地方。
请告诉我们全部代码 entityBag是一个空数组。您正在发送一个空数组。我遗漏了什么?在emit上尝试使用JSON.stringify(entityBag)。我刚刚遗漏了entity函数现在将使用JSON.stringify编辑它。我正在接收一个填充了空对象的数组@Hosar@UtsavMangal尝试
JSON.parse(msg)
,而不是直接将其设置为=msg
。