Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Java 使用web套接字操作从服务器获取的数组时出现问题_Java_Node.js_Websocket - Fatal编程技术网

Java 使用web套接字操作从服务器获取的数组时出现问题

Java 使用web套接字操作从服务器获取的数组时出现问题,java,node.js,websocket,Java,Node.js,Websocket,我在通过websockets操作回调函数中获得的数组时遇到了一些问题 服务器端代码 var io = require('socket.io').listen(app); io.sockets.on('connection', function (socket) { var currentTime = new Date().getTime(); var startTime = currentTime - (5*60*1000); step = 30*1000; v

我在通过websockets操作回调函数中获得的数组时遇到了一些问题

服务器端代码

var io = require('socket.io').listen(app);

io.sockets.on('connection', function (socket) {
    var currentTime = new Date().getTime();
    var startTime = currentTime - (5*60*1000);
    step = 30*1000;
    var stats = [];
    stats["values"] = [1, 2, 3, 4, 3, 4, 5, 8, 2, 3, 4, 1];
    stats["start"] = startTime;
    stats["end"] = currentTime;

    socket.emit('initial', { stats: stats }); 
    socket.on('echo', function (data) {

    }); 
});
var data;

socket.on('initial', function (stats) {
  data = stats.stats;
});
客户端代码

var io = require('socket.io').listen(app);

io.sockets.on('connection', function (socket) {
    var currentTime = new Date().getTime();
    var startTime = currentTime - (5*60*1000);
    step = 30*1000;
    var stats = [];
    stats["values"] = [1, 2, 3, 4, 3, 4, 5, 8, 2, 3, 4, 1];
    stats["start"] = startTime;
    stats["end"] = currentTime;

    socket.emit('initial', { stats: stats }); 
    socket.on('echo', function (data) {

    }); 
});
var data;

socket.on('initial', function (stats) {
  data = stats.stats;
});
现在当我尝试操作数据变量时,比如使用push和shift

data.values.push(10);
data.values.shift();
我原以为会有

2,3,4,3,4,5,8,2,3,4,1,10


但我不知道shift操作会完全删除所有元素,而数组中只剩下10个元素。出了什么问题?

您将获得响应对象
{stats:stats}
,但您对
stats
属性感兴趣:

var data;

socket.on('initial', function (obj) {
  data = obj.stats;
});

@伊尔辛。我就是这么做的。对不起,我在代码中打错了。我现在已经修好了。问题是,即使我这样做,它也不起作用。当我尝试使用shift操作数据对象时。它删除了所有元素。你确定数组之前真的被填满了吗?你将stats初始化为
var stats=[]将其更改为
var stats={}
在操作
控制台之前,您可以发布
数据的
日志吗?