2013-06-24 56 views
0

我正在使用Socket.io,node.js和express來製作可以在線玩的簡單雙人遊戲。到目前爲止,我在這個主題上找到的一切都沒有解決我的問題,或者比我之後的複雜得多。基本上,我希望玩家能夠加入一個房間(我已經解決了這個問題),並且在房間裏需要爲每個玩家分配「玩家1」和「玩家2」屬性。我想象的是將玩家1分配給第一個連接的用戶,將玩家2分配給第二個玩家,但我還沒有弄清楚如何將值/變量分配給單個套接字連接。將數據分配給套接字

回答

2

您可以將屬性添加到個別插座這樣的:

io.sockets.on('connection', function(socket){ 
    socket.name = 'John'; 
    console.log(socket.name); // prints out 'John' 
}); 
1

好像你要尋找的應該是相當簡單的。我喜歡@ iheartramen的回答,除非它很難確定哪些插座屬於哪個房間。我會做的是保持房間的名單,什麼插座屬於他們:

var _rooms = [ 
    { 
    id: 'Some Unique Room ID', 
    playerSockets: [] 
    } 
    //... 
} 

然後當玩家連接到一個給定的房間,你只需要添加他們到列表連接:

io.sockets.on('connection',function(socket){ 
    var room = getRoom(); // however it is you're mapping rooms... 
          // this returns a reference to a room object 
          // in the _rooms array 
    // you can cap the number of players here 
    socket.playerNumber = room.sockets.length+1; 
    room.sockets.push(socket); 
} 

現在你有向後和向前的映射。因爲只有一個事件線程,所以您不必擔心線程安全性與push()方法。