Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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 没有指定功能的Web套接字对象_Javascript_Node.js_Express_Websocket_Socket.io - Fatal编程技术网

Javascript 没有指定功能的Web套接字对象

Javascript 没有指定功能的Web套接字对象,javascript,node.js,express,websocket,socket.io,Javascript,Node.js,Express,Websocket,Socket.io,我正在使用javascript(p5.js)和node.js w/express和socket.io 这是我当前代码的一部分,我认为问题在于: 对于(变量i=0;i

我正在使用javascript(p5.js)和node.js w/express和socket.io

这是我当前代码的一部分,我认为问题在于:


对于(变量i=0;i<3;i++){
对于(var j=0;j<3;j++){
对于(var k=0;k<3;k++){
对于(var l=0;l<3;l++){
socket.emit('grid',grid[i][j][k][l]);
}
}
} 
}
插座打开(“网格”,测试);
}
功能测试(gridElement){
gridElement.show();
console.log('showing');

}
您可以在客户端和服务器之间发送单元数据,但当数据到达另一端时,它将是普通对象而不是单元对象。io使用JSON作为数据传输格式,JSON不保留对象的类型,只保留对象的数据

您必须编写代码,才能将其转换为包含方法的单元格对象。通常,可以为对象创建一个构造函数,该构造函数接受一个普通对象作为参数,并从该普通对象中获取数据,然后当您从另一端接收到该数据时,创建一个新的单元格对象,并将刚接收到的数据传递给它:

function Cell(data) {
    this.x = data.x;
    this.y = data.y;
    this.w = data.w;
    this.val = data.val;
}

socket.on('grid', function(data) {
    // data here is a plain object
    let gridElement = new Cell(data);
    gridElement.show();        
});
或者,使用构造函数,您的问题已经显示:

socket.on('grid', function(data) {
    // data here is a plain object
    let gridElement = new Cell(data.x, data.y, data.h, data.val);
    gridElement.show();        
});

这回答了你的问题吗?我猜是这样
emit()
在引擎盖下使用
JSON.stringify
,因此您在cell实例中拥有的任何函数在解析回来后都不会被保留。也许考虑在您的单元上创建<代码>。class@BENARDPatrick我不这么认为,因为我已经在我的服务器代码中使用了socket.broadcast.emit()。@NickParsons我一点都不熟悉。fromData(),你能详细说明一下吗?这需要两个单元格构造函数吗?一个用于服务器,一个用于客户端,您必须在两个位置维护?@NickParsons-这要求在客户端和服务器上都有单元代码,但您可以使用适当的模块和代码布局共享一个实现。@jfriend00如果您查看我的原始帖子,我已经更改了您的函数(数据)的“测试”函数。。。我测试过了,我不再有错误,但我还是看不到电池?我还没有编辑服务器代码,我是不是想在那里做些更改?@user769321-我们必须查看更多的实现,才能知道还缺少什么。@jfriend00您介意我编辑我的问题并添加不同服务器、草图和单元格文件的屏幕截图吗?