在quizup这样的多人游戏中,socket.io房间在配对中是否有任何作用

时间:2018-02-16 21:11:06

标签: javascript node.js socket.io

socket.io房间是否有像Quizup这样的实时多人游戏?我已经为连接到服务器的两个玩家的匹配编写了这段代码:

var waitingPlayer = null;

io.on('connection',(socket)=>{
    console.log('new user connected');
    if(waitingPlayer == null)
    {
        waitingPlayer = socket;
        waitingPlayer.emit('waiting-message',{
            text:"waiting for an opponent"
        });
    }
    else{
        waitingPlayer.emit('matchFound',{
            text:"Match Found"
        });
        socket.emit('matchFound',{
            text:"Match Found"
        });
    }
}

1 个答案:

答案 0 :(得分:1)

  

socket.io房间是否有像Quizup这样的实时多人游戏?

排序,但不是真的。

Socket.io房间如下:

  1. 一个集合(在编程意义上),可以让您轻松跟踪一组套接字。
  2. 使用一个命令向一组套接字发送消息的简单方法。
  3. 使用一个命令向组中的每个人(除了您自己)发送消息的简单方法。
  4. 房间不是独家的,所以给定的插座可以在你想要的多个房间里。
  5. 仅限服务器端功能。客户不能进入房间,不能把自己放在房间里,可以直接与房间沟通。任何这类功能都必须通过要求服务器为您完成。
  6. 而且,这就是它们的本质。

    房间内置无配对功能。您可以将房间用作等候室和个人匹配的集合管理工具,但您将自己实现匹配制作逻辑,并将房间用作集合(用于跟踪一个或多个套接字的便捷工具)

    例如,您可以在socket.io中创建一个“waitingRoom”空间,您可以在其中放置任何想要匹配的套接字,但是还没有匹配。然后,一旦你想要启动另一个游戏,你就可以从waitingRoom集合中随机选择两个套接字并在它们之间启动匹配。但是,在那种情况下,你真的只是将房间用作收集工具,没有别的。您也可以轻松拥有自己的套接字阵列,也称为waitingRoom。

    在您显示的代码中,如果您从未拥有多个等待播放器,那么您可以将其保存在一个变量中,就像您一样。您的现有方案似乎需要更多逻辑,以便当套接字与正在进行的游戏断开连接而另一个套接字再想要再次找到游戏时。而且,您需要处理waitingPlayer也断开连接的情况。