【问题标题】:How to handle adding players of game to socket room with socket.io如何使用socket.io处理将游戏玩家添加到socket房间
【发布时间】:2016-01-10 08:20:09
【问题描述】:

所以在我的前端,当玩家点击加入游戏时,控制器会调用 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,所以队列会调用某种函数来加入玩家。

【问题讨论】:

    标签: javascript node.js sockets socket.io


    【解决方案1】:

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

    方法的示例步骤:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2017-02-25
      相关资源
      最近更新 更多