Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过套接字io发送对象数组?_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript 如何通过套接字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)*

我在通过发送对象数组时遇到了一个问题 套接字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;
});  
还有我的客户端代码

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