今天有一哥们提出了关于再flash游戏中如何再服务器端判断某些用户是否已经掉线的问题,也因此引发了一些探讨.
首先最简单的方法应该就是再服务器端socket去判断,当然再客户端也要进行对应的超时判断处理.可TCP协议本身是不带即时状态检测的,因此可能出现延迟现象等等
讨论的结果是使用"心跳"来进行检测,定时向服务器端发送特殊信息,然后再服务器端接受并做时间判断,如果一定时间内没有接收到信息,则可认为该用户已经掉线.大致思路是这样的.
然后有到网上搜索,发现了一篇文章总结的比较全面,内容如下:
几个版本的 AS API,发现Flash的socket越来越多的问题。也许早就有人总结,不过我是个新手,也不太经常看这方面的前辈经验文章,所以遇到了问题,还是自己想了点歪招。
1、数据蒸发。这并不是Flash本身的问题,这种结构本身就有丢失数据的可能,因为之前说过,发送动作只保证一级成功,在公网上,经过n级路由器,一条命令 随时都可能蒸发。解决方法 似乎只有给每条指令加上序号,并且每条指令都立刻反馈,服务器 和客户端两方都要检查序列,并保存一定数量的 buffer。
2、数据粘连。Flash动画本身是有速率的,对于一个30fps的动画,如果在1/30秒内收到多条消息,在socket的buffer中,它们就会粘连在一起。因为AS的事件触发是以flash动画的根计时器为单位的。解决方法是常见的长度标记,就是在消息头部标记长度,然后将buffer中的 数据按长度切开。但是这样偶尔会有切到最后剩下半条消息的情况发生,因为它的buffer好像是定长的。同时,在高速发送数据的测试中,也发生了发送数据的粘连,多是和心跳包粘连了。发送消息是主动触发,也就是socket.flush(),所以理论上它应该和动画速率无关,为何粘连仍在考证中。
3、离线。TCP协议 本身是不带即时状态检测的。这意味着如果一个客户端突然死机,或者网络中断(不是主动关闭),服务器是不能马上知道的。TCP 的发送消息机制会在6秒、24秒、72秒重发,遍历栈以检查客户端连接中断有时候需要2个小时,这在游戏中是不可以接受的。解决方法就是心跳检测,一段间隔发送一个特殊包给服务器,服务器立刻反馈,同时客户端和服务器端都有一个计时器,每个间隔检查最后的心跳时间和当前时间对比,超时的就可以立刻认为断线。
4、性能。Flash由于自身的祯特性,在高速收发短命令时候性能是相对较差的。在我的实验中,每秒300多条消息(包括解密过程),就会出现丢失了,再密集一些,socket就可能异常中断。好在一般的互动游戏中,不会有这种情况出现,如果需要瞬间接受大量命令(比如进入大厅刷新在线用户列表),可以尝试在逻辑部分将数据粘合成一个大的命令。
分享到:
相关推荐
双开游戏显示双用户中Administrator 切换用户不掉线
游戏掉线提醒工具2020最新版,掉线后会发送QQ消息给用户,提醒尽快登录上线, 非常方便的一个小工具,喜欢不要错过
游戏掉线提醒工具 2020.05 可设置游戏监控数量,提醒次数,提醒间隔 掉线可发送提醒信息到指定QQ
游戏掉线微信提醒工具
由于设置了特效、部分机子可能会小卡。 DNF 掉线乱封号现象太严重了,没办法,从网上找的DNF掉线数据清理工具. 运行测试主要是删除了一些临时文件。类似于网上的DNF掉线数据清理。
使用方法:在游戏进程名处填写任务管理器中你自己游戏的进程名然后点击开始即可,这个小程序也可以让其它连网的进程在掉线时关机,只需在游戏进程名处填写你想监控的程序的名字就可以了。 由于是用C#编写,若有不能...
面向用户的支持用户掉线的联邦学习数据隐私保护方法.docx
永不掉线自动重连多用户管理系统【服务端_客户端】 1、掉线自动重连 2、检测账号到期时间限制 3、检测账号重复登陆 4、检测软件更新 5、检测账号黑名单 7、服务端踢出用户 8、服务端与客户端交互数据 9、...
玩游戏老掉线什么情况.docx
用于游戏挂机网络波动造成掉线时警报提示重新链接登录。
利用sql判断当前用户是否登录,全局表或者临时表的存储和建立,在系统断线时可自行掉线,以此我们可判断当前用户是否在线!
网吧、校园网、公司内网等局域网用户近期要格外警惕了!如果你的MSN、QQ频繁掉线,那么...当局域网中一台机器被植入ARP木马后,它会持续对整个局域网网发起ARP攻击,使其他用户访问任意网站时都会面临盗号木马的侵袭!
WCF心跳判断服务端及客户端是否掉线并实现重连接
wow魔兽世界 怀旧服 防掉线程序,通过图像识别,识别登录窗口,每分钟截图一次,识别到登录窗口,自动重新登录
可以断网的时候发出声音,迅速报警,晚上挂游戏睡觉后,以免掉线后浪费时间。在设置好后,可以发出掉线提示~~适用于网络不稳定的地方。 设置非常简单。一看即会
ADSL用户断流掉线解析.docx
掉线器提示
由于小米路由器内置1TB大硬盘,所有有很多用户都会选择使用小米路由器,那么,小米路由器频繁掉线是怎么回事?如何解决?针对此问题,本文就为打击介绍小米路由器老是掉线的原因及解决方法,希望本文可以帮助到大家
5G接入掉线相关参数介绍 接入类共25个主要参数 掉线类共8个主要参数
ADSL掉线的原因与优化方案,在平常的使用中ADSL经常出现这样那样的问题,但最主要的问题还是掉线的问题,这篇文章值得一看,希望能解决您所遇到的关于ADSL的问题。