2016-07-04 16 views
1

Ich habe eine Situation, in der ich nicht sicher bin, wie man den anderen Kunden die aktuelle Punktzahl ihrer Konkurrenten sendet.Kunden senden, die andere Spieler bewerten? Socket.io

Zum Beispiel:

Wenn Spieler 1 Klicks ich es möge dann sagen Spieler zwei die Punktzahl des Spielers einen auf der Client-Seite.

userOne = userIDs[0]; 
    userTwo = userIDs[1]; 

    socket.on("player one", function(data) { 
     console.log(data.pScore + "THIS IS WORKING"); 
     score = data.pScore; 
     console.log("THIS IS PLAYER TWO" + data.pNameTwo); 
     if (isInArray(data.pNameTwo,allUsers)) { 
      console.log(users[socket.id].username); 
     } 
     socket.emit("player ones score", {p1Score: score}); 
    }); 

    socket.on("player two", function(data) { 
     console.log(data.pScore + "THIS IS WORKING"); 
     score = data.pScore; 
     socket.emit("player twos score", {p2Score: score}); 
    }); 

Ich wollte den Punktestand senden, indem ich nur eine bestimmte Benutzer-ID ausgab. Aber ich bin nicht sicher, der beste Weg, dies zu tun.

+0

machen ein Spiel Objekte beide Benutzer können sehen, dass die anderen Spieler verknüpft hat. – dandavis

+0

Wie würde man das tun? –

Antwort

1

Der beste Weg, dies zu tun, ist ein Objekt zu haben, das alle Verbindungen enthält und jedes Mal aktualisiert wird, wenn ein Benutzer eine Verbindung herstellt oder trennt. Ich sehe Sie schon eine User-ID Liste ihrer IDs haben, also, wenn Ihr Objekt userConnections genannt wird, sollte der Code sein ...

userOne = userIDs[0]; 
userTwo = userIDs[1]; 

socket.on("player one", function(data) { 
    console.log(data.pScore + "THIS IS WORKING"); 
    score = data.pScore; 
    console.log("THIS IS PLAYER TWO" + data.pNameTwo); 
    if (isInArray(data.pNameTwo,allUsers)) { 
     console.log(users[socket.id].username); 
    } 
    userConnections[userTwo].emit("player ones score", {p1Score: score}); 
}); 

socket.on("player two", function(data) { 
    console.log(data.pScore + "THIS IS WORKING"); 
    score = data.pScore; 
    userConnections[userOne].emit("player twos score", {p2Score: score}); 
}); 

UPDATE

Ok, ich werde zeigen, wie man initialisieren und verwalten Sie auch userConnections. Es geht so (ich rate nur, wie einige Variablen in Ihrem Code aufgerufen werden, damit ich einige Namen falsch bekommen kann).

var userConnections = {} 

io.on('connection', function(socket) { 
    userConnections[socket.id] = socket; 

    //socket.on('player one', function(data) { ... }); 
    //socket.on('player two', function(data) { ... }); 

    socket.on('disconnect') { 
     delete userConnections[socket.id]; 
    } 
} 
+0

Was ruft userConnections auf? –

+0

Weil ich versucht habe, was Sie dort haben, aber sagt, kann nicht lesen Eigenschaft emittieren von undefined –

+0

Ich war albern, wenn ich nur eine globale Emission io.sockets.emit ausführen und die Werte erhalten konnte. Aber danke für die Aufklärung, denn das hat mich auf den richtigen Weg gebracht. –

Verwandte Themen