Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用socket.io将游戏玩家添加到socket room_Javascript_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript 如何使用socket.io将游戏玩家添加到socket room

Javascript 如何使用socket.io将游戏玩家添加到socket room,javascript,node.js,sockets,socket.io,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.

因此,在我的前端,当玩家单击“加入游戏”时,我有一个控制器调用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\u id)
的东西将玩家加入套接字室。在创建游戏之前,我不会知道游戏id,因此队列将调用某种函数加入玩家。

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

方法的示例步骤:

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