如何处理使用socket.io将游戏玩家添加到套接字室

时间:2015-10-12 18:47:44

标签: javascript node.js sockets socket.io

所以在我的前端,当玩家点击加入游戏时,我会让控制器调用joinPublicGame。

$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,所以队列会调用某种功能来加入玩家。

1 个答案:

答案 0 :(得分:0)

从听起来来看,你与玩家之间存在多对一的关系。您的服务器必须通过诸如游戏室控制器之类的东西强制执行此语义。它包含套接字列表,处理事件合并以及更新任何更改的相关客户端。尽可能多地保持房间的状态"在此控制器中,以便客户看到的内容之间不存在任何差异。

方法的示例步骤:

  1. 客户端发布"加入游戏"事件
  2. 服务器侦听"加入游戏" event并将其userID信息和任何其他相关信息(如套接字实例本身)添加到排队的对象中。
  3. 当队列中有足够的人时,它会将之前对象的列表发送给游戏室控制器。
  4. 游戏室控制器设置任何状态初始化并开始与客户交谈,以便他们的UI可以更新,房间可以开始。