2015-10-12 64 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可以更新并且可以开始房间。