2016-07-29 14 views
0

peer.jsを使用していて、すべての着信接続を配列に格納しようとしています。ピア接続をアレイに格納する方法

アプリケーションの背景:コンピュータはメインコンソールとして機能します。電話機はコンソールのピアIDを使用してコンソールに接続し、コンソールにピアIDを送信します。コンソールは各ピアIDを読み込み、データ接続を作成します。

私は接続を配列に格納しようとしていますが、必要な機能で接続を呼び出すことができます。私が試して、関数 'SendPhonePlayerDetails'に接続を渡すと、接続は未定義として表示されます。

//establish a connection 
//data.pid is the peer id of the phone 
connections[current_player] = peer.connect(data.pid); 

setTimeout(function() { 
    sendPhonePlayerDetails(connections[current_player]); 
},'2000'); 

function sendPhonePlayerDetails(connection) 
{ 
    console.log(connection) //prints undefined; 
    player_num = Object.size(players); //get the player number 
    player_name = players["p" + player_num][1] //get the players name 

    //send data to the phone 
    setTimeout(function() { 
     send_data({player_number: player_num, player_name: player_name }, connection); 
    },'2000'); 

    //if not player 1 notify them who is the leader 
    if(player_num > 1){ 
     setTimeout(function() { 
      send_data({controlling: players["p1"][1] }, connection); 
     },'2000'); 
    } 

} 


function send_data(data, connection) 
{ 
    if (!connection) return; 
    connection.send(data); //send the data to the phone 
} 
+0

「current_player」のようなサウンドは有効なリファレンスではありません。あなたはその価値をチェックしていますか? – mscdex

+0

はい。私は現在のプレイヤーをログに記録することができます#@mscdex –

+0

'console.dir(Object.keys(connections))'の場合、(最初の)タイムアウトコールバックの時点で 'current_player'に含まれているキーが表示されますか? – mscdex

答えて

0

接続配列はグローバルとして解釈されませんでした。 'window。'を追加することで、ログをコンソール化して接続配列を渡すことができました。

setTimeout(function() { 
    sendPhonePlayerDetails(window.connections['p' + (current_player-1)]); 
},'2000'); 
関連する問題