首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在像quizup这样的多人游戏中,socket.io房间在婚介中有什么作用吗?

在像quizup这样的多人游戏中,socket.io房间在婚介中有什么作用吗?
EN

Stack Overflow用户
提问于 2018-02-16 13:11:06
回答 1查看 1.2K关注 0票数 2

在制作像Quizup这样的实时多人游戏中,socket.io机房有什么作用吗?我编写了这段代码,用于连接到服务器时匹配两个播放器:

代码语言:javascript
运行
AI代码解释
复制
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"
        });
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-02-16 15:23:20

在制作像Quizup这样的实时多人游戏中,socket.io机房有什么作用吗?

算是吧,但不是真的。

Socket.io客房如下:

  1. 一个集合(在编程意义上),它允许您轻松地跟踪一组套接字。
  2. 一种使用一个命令向一组套接字发出消息的简单方法。
  3. 使用一个命令向组中的每个人发出消息的简单方法(除了您自己)。
  4. 房间也不是排他性的,所以给定的套接字可以在任意多的房间里。
  5. 仅服务器端功能。客户不能进入房间,不能把自己放在房间里,可以直接与房间沟通。任何这类功能都必须通过要求服务器为您完成。

而且,他们就是这样的。

房间里没有内置的婚介功能。您可以将房间用作等候室和单个匹配的集合管理工具,但是您将自己实现匹配,并将这些房间作为集合(用于跟踪一个或多个套接字的方便工具)。

例如,您可以在socket.io中创建一个“socket.io”空间,在该空间中放置任何需要匹配的套接字,但还没有匹配的套接字。然后,只要您想要启动另一个游戏,就可以从waitingRoom集合中随机选择两个套接字,并在它们之间进行匹配。但是,在这种情况下,您实际上只是使用房间作为一个收集工具,而不是其他。您也可以轻松地拥有自己的套接字数组,这些套接字也称为waitingRoom。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48834915

复制
相关文章
Swift 日历添加事件 删除事件
import EventKit /** Privacy - Calendars Usage Description 添加日历权限 info.list 配置权限 */ /// 日历添加事件 class KKAddEventClasse: NSObject { /// 添加成功回调 typealias SuccessAddEvent = ((_ identifier: String) -> Void) /// 添加失败回调 typealias ErrorAddEvent =
菜菜不吃蔡
2021/03/20
4.1K1
如何获取相应tableview中的touchesBegan事件[通俗易懂]
项目中使用了UITableViewController,里面有用到UITextView需要点击键盘外的地方来隐藏我的键盘
全栈程序员站长
2022/09/15
1.6K0
如何从列表中获取元素
观察URAM的物理管脚,不难发现A/B端口都有相应的地址、使能、读写控制信号。与BRAM不同的是URAM的读写使能信号是同一个管脚RDB_WR_A/B,其为0时执行读操作,为1时执行写操作,这意味着一旦A/B端口独立,同一端口的读写操作就无法同时发生,因此,如果采用上一篇文章中介绍的方法将其配置为两个独立的单端口RAM,其读写行为与常规的单端口RAM是不同的,进一步而言,此时的读写行为类似于NO_Change模式。
Lauren的FPGA
2019/10/30
18.8K0
如何从JavaScript对象中删除属性?
在使用 JavaScript 中的对象时,你可能会遇到需要从对象中完全删除属性的情况。为实现这一点可以有好几个选择:
疯狂的技术宅
2021/04/01
13.2K0
如何从组中删除Linux用户?
在Linux中,用户可以是一个主要组和一个或几个次要(辅助)组的成员。文件“ / etc / group”为Linux系统中的每个用户定义了组成员身份。
用户6543014
2020/04/07
20.3K0
Javascript 中如何存储,获取和删除 Cookies
Javascript 中如何存储,获取和删除 Cookies。 function setCookie(name,value){ var exp = new Date(); exp.setTime(exp.getTime() + 30*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } function getCookie(name){
Denis
2023/04/15
1.6K0
从Git仓库中恢复已删除的分支、文件或丢失的commit
比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支
用户8705050
2021/06/08
3.7K0
如何从Ubuntu Linux中删除Firefox Snap?
Ubuntu Linux是一款广受欢迎的开源操作系统,拥有强大的功能和广泛的应用程序选择。默认情况下,Ubuntu提供了一种称为Snap的软件打包格式,用于安装和管理应用程序。Firefox是一款流行的开源网络浏览器,而Firefox Snap是Firefox的Snap版本。
网络技术联盟站
2023/05/25
5.6K0
如何从Ubuntu Linux中删除Firefox Snap?
Exchange删除移动完成的邮箱记录
在Exchange服务器维护中,常用 New-MoveRequest 命令来移动邮箱到指定的数据库。要想查询移动的状态,可使用 Get-MoveRequest 命令来获取移动的状态。
水中游泳的小鸟
2019/03/16
1.2K0
如何从 Python 列表中删除所有出现的元素?
在 Python 中,列表是一种非常常见且强大的数据类型。但有时候,我们需要从一个列表中删除特定元素,尤其是当这个元素出现多次时。本文将介绍如何使用简单而又有效的方法,从 Python 列表中删除所有出现的元素。
网络技术联盟站
2023/06/01
14K0
Spring 如何从 IoC 容器中获取对象?
前面几篇文章主要分析了 Spring IoC 容器如何初始化,以及解析和注册我们定义的 bean 信息。
WriteOnRead
2021/03/12
10.4K0
Spring 如何从 IoC 容器中获取对象?
网页中如何获取客户端系统已安装的所有字体?
如何获取系统字体? 1.首先在需要获取系统字体的网页<body>后加入以下代码: <DIV style="LEFT: 0px; POSITION: absolute; TOP: 0px"> <OBJECT ID="dlgHelper" CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" WIDTH="0px" HEIGHT="0px"> </OBJECT> <script src="FontFacesMenu.js" language="javascript" type="text/javascript"></script> </DIV>
Java架构师必看
2021/03/22
7.4K0
如何优雅的从Array中删除一个元素
从JavaScript数组中删除元素是开发人员经常遇到的常见编程范例。与许多JavaScript一样,这并不像它应该的那么简单。
Jean
2018/12/21
10.3K0
如何从 Python 中的字符串列表中删除特殊字符?
在进行字符串处理和文本分析时,有时我们需要从字符串列表中删除特殊字符。特殊字符可能是空格、标点符号、换行符等,在某些情况下它们可能干扰我们的文本处理或分析任务。Python 提供了多种方法来删除字符串列表中的特殊字符。本文将详细介绍在 Python 中删除字符串列表中特殊字符的几种常用方法,并提供示例代码帮助你理解和应用这些方法。
网络技术联盟站
2023/06/01
9.5K0
Git 命令行教程:如何在 GitLab 中恢复已删除的分支
在软件开发过程中,版本控制是一个至关重要的环节。Git 是最流行的分布式版本控制系统之一,它能够帮助团队高效地管理代码。然而,有时候会发生意外,例如代码误合、错误的删除等情况,导致重要的开发分支本地和远程不慎被删除。本文将为您介绍如何使用 Git 命令行在 GitLab 中恢复已删除的分支,帮助您快速解决这类问题。
修己xj
2023/08/25
1.4K0
Git 命令行教程:如何在 GitLab 中恢复已删除的分支
Android向系统日历添加日程事件
在项目开发过程中,有时会有预约提醒、定时提醒等需求,这时我们可以使用系统日历来辅助提醒。通过向系统日历中写入事件、设置提醒方式(闹钟),实现到达某个特定的时间自动提醒的功能。这样做的好处是由于提醒功能是交付给系统日历来做,不会出现应用被杀情况,能够做到准时提醒。 一般来说实现向系统日历中读写事件一般有以下几个步骤: (1)需要有读写日历权限; (2)如果没有日历账户需要先创建账户; (3)实现日历事件增删改查、提醒功能;
developerHaoz
2022/05/13
3.3K0
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7.7K0
算法-删除已排序数组中的重复项
版权声明: https://blog.csdn.net/li_xunhuan/article/details/89843311
Fisherman渔夫
2019/07/31
3.6K0
点击加载更多

相似问题

如何在颤振项目中使用Logger

26

Dart /颤振错误:“toStringDeep”未为类“Logger”定义

41

颤振:颤振插件、颤振软件包和颤振模块有什么区别?

24

Android和颤振

14

颤振清洁和颤振运行(Ios)永不结束

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档