2015-10-12 67 views
0

所以在我的前端,當玩家點擊加入遊戲時,我有控制器調用joinPublicGame。如何使用socket.io處理添加遊戲的玩家到套房房間

$scope.joinPublicGame = function() { 
      Socket.emit('join public game'); 
}; 

然後在服務器上我有

// Player requests to join a public game 
    socket.on('join public game', function() { 
     console.log(socket.request.user.username); 
     // add player to queue 
    }); 

當有足夠的球員在隊列中的遊戲廳被創建,我怎麼能加入玩家插座房間的東西,如socket.join(game_id)。在創建遊戲之前我不會知道game_id,但是隊列會調用某種函數來加入玩家。

回答

0

從聽起來像,你有一個多對一的關係到玩家到遊戲室。你的服務器必須通過諸如「遊戲室控制器」之類的東西來執行這種語義,該控制器包含套接字列表,處理事件合併以及更新任何改變的相關客戶端。在這個控制器中保持儘可能多的「房間狀態」,以便客戶看到的不會有任何差異。

示例的方法步驟:

  1. 客戶端發出 「加入遊戲」 事件。
  2. 服務器偵聽「加入遊戲」事件並將其用戶ID信息和任何其他相關信息(如套接字實例本身)添加到排隊等待的對象。
  3. 當隊列中有足夠的人時,它將先前對象的列表發送給遊戲室控制器。
  4. 遊戲室控制器設置任何狀態初始化,並開始與客戶通話,以便他們的UI可以更新並且可以開始房間。