如何访问node.js服务器文件中声明的数组

时间:2016-06-15 18:27:20

标签: javascript arrays node.js socket.io

我在Node.js应用程序的server.js中声明了一个数组。我希望客户端能够访问阵列及其内容。那可能吗?如果是的话,我该怎么做?我尝试了以下内容,但控制台总是说全局数组未定义

server.js

//connection code above this
var global_array=[];
socket.on('change', function(data){
        socket.broadcast.emit('change', data);
        global_array.push(data);
        console.log(global_array);
    });
.... //rest code

main.js

if (typeof global_array !== 'undefined' && global_array.length > 0) {
console.log(global_array);
}  else {
console.log("global array not defined");
}

1 个答案:

答案 0 :(得分:2)

在服务器上定义变量并不意味着它也可以在客户端访问。

我建议在客户端初始化 global_array 变量。当客户端连接到服务器时,服务器将发送初始数组数据或空数组(如果没有数据)。然后,客户端将收听更改事件。

服务器端代码:

var global_array = [];

io.on('connection', function(socket) {
  socket.emit('initialize array', global_array);
  socket
    .on('change', function(data) {
      socket.broadcast.emit('change', data);
      global_array.push(data);
      console.log(global_array);
    });
});

客户端代码:

var global_array;

socket
  .on('initialize array', function(initial_global_array) {
    global_array = initial_global_array;
  })
  .on('change', function(data) {
    global_array.push(data);
  });