2016-07-04 18 views
1

我有一種情況,我不知道如何發送其他客戶他們的競爭對手目前的分數。發送客戶其他球員比分? Socket.io

例如:

當玩家點擊1我想它,然後告訴玩家兩個播放一個對客戶端的分數。

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

我打算通過僅發送給特定用戶ID來發送得分。但我不確定最好的方式。

+0

作出遊戲對象這兩個用戶都可以看到有其他玩家鏈接。 – dandavis

+0

你會怎麼做? –

回答

1

要做到這一點,最好的辦法是讓一個包含所有連接的對象在每次連接/斷開連接時都會更新。我看你已經有了自己的ID的用戶ID列表,因此,如果你的對象稱爲userConnections,你的代碼應該是...

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

好吧,我將展示如何初始化和管理用戶連接。它是這樣的(我只是猜測你的代碼中的一些變量是如何被調用的,所以我可能會得到一些錯誤的名稱)。

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

userConnections呼叫是什麼? –

+0

因爲我嘗試了你在那裏,但說不能讀取屬性排放的未定義 –

+0

當我只是運行一個全局排放io.sockets.emit並獲得值時,我很愚蠢。但是,謝謝你的啓發,因爲這使我走上了正確的道路。 –

相關問題