2016-06-15 11 views
0

Node.jsアプリケーションでserver.jsで宣言された配列があります。私は、クライアント側がアレイにアクセスできるようにし、そのコンテンツを望みます。それは可能ですか?はいの場合、どうすればいいですか?私は、次のことを試みたが、コンソールは常にない、サーバー上の変数を定義するグローバル配列がnode.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"); 
} 
+2

の配列スクリプトタグの側に? – adeneo

+0

@adeneoこれはindex.htmlであり、console.log(global_array)を実行するときです。それはReferenceErrorを与える:global_arrayは定義されていない – Arihant

答えて

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); 
 
    }); 
 
});

クライアント側コード:それはそれはHTML、単に出力を出力しているものは何でもで

var global_array; 
 

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

関連する問題