2016-07-29 9 views
0

Ich benutze peer.js und versuche, alle eingehenden Verbindungen in einem Array zu speichern.Wie Peer-Verbindungen in Array gespeichert werden

Hintergrund der App: Computer fungiert als Hauptkonsole. Telefone verbinden sich mit der Konsolen-Peer-ID mit der Konsole und senden der Konsole ihre Peer-ID. Die Konsole liest dann jede Peer-ID ein und erstellt eine Datenverbindung damit.

Ich versuche, die Verbindungen in einem Array zu speichern, und dann kann ich die Verbindung in jeder Funktion aufrufen, die ich brauche. Wenn ich versuche, die Verbindung zur Funktion 'SendPhonePlayerDetails' zu übergeben, wird die Verbindung als undefiniert ausgegeben.

//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

Klingt wie 'current_player' ist keine gültige Referenz dann. Überprüfst du seinen Wert? – mscdex

+0

Ja. Ich bin in der Lage zu loggen den aktuellen Player # @mscdex –

+0

Wenn Sie 'console.dir (Object.keys (Verbindungen))', zeigt es den Schlüssel in 'current_player' ab dem (ersten) Timeout-Callback enthalten? – mscdex

Antwort

0

Das Verbindungsarray wurde nicht als global interpretiert. Durch Hinzufügen von 'window.' Konnte ich das Protokoll loggen und das Verbindungsarray übergeben.

setTimeout(function() { 
    sendPhonePlayerDetails(window.connections['p' + (current_player-1)]); 
},'2000'); 
Verwandte Themen