断线重连,其实并不是一个神马高深的东西,相信各位做游戏的程序们都处理过这个问题,但是,怎么把这个断线重连做的安全,完善呢?下面就跟各位大神来讨论讨论这个问题~!
游戏中,断线重连(这里是基于TCP长连来讨论的)其实跟游戏类型有关,比如页游,端游,还是手游。当然,我只做过页游和手游,所以咱不对端游发表意见。对于页游而言,一般是PC网络是很稳定的,如果不稳定,其实是没办法玩游戏的,所以对于页游,一般断线处理是重新登录,除非有要求要做重连机制。
而对于手机来说,网络是相当不稳定的,任何一个基站的切换,进出电梯等都会出现网络抖动导致游戏断线。如果采用重登陆的话,那表现相当不友好而导致大量玩家流失。所以要设计一个比较好的断线重连,让玩家能在网络不稳定的情况下,能比较流畅的进行游戏。
在设计重连的时候,要考虑几个因素:连接的安全性和超时处理,数据包缓存。
1、安全性:为啥要考虑连接安全性呢,因为重连不是走正常登录流程,而是直连过来,所以无法保证连接过来的tcp是合法连接,故在此要对连接做合法校验,保证直连过来的是正常客户端请求过来的,预防攻击。合法性校验的方式很多,在此不展开讲了,有兴趣的可以私下交流。
2、超时处理,因为服务器不可能无限制的等待客户端重连,所以要设置一个超时时间,如果过了超时等待时间,服务器应该清除缓存,客户端走重登陆流程
3、数据包缓存,这里需要缓存没有发送成功的消息协议,客户端重连过来后,需要再次重新发送。
以上是项目过程中使用的方案,欢迎各位来讨论,做一套更完善的重连机制。
分享到:
相关推荐
S7.netpuls掉线重连
主要介绍了C# Mqtt 断线重连,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java socket client 断线重连的简单实现 有什么意见可以提哦
SocketClient MFC 代码,实现与tcp sever的链接,实现自动断线重连
异步TCP传输,可以实现短线超时重连机制,代码中有详细注释
c#Socket客户端断线重连! c#Socket客户端断线重连! c#Socket客户端断线重连! c#Socket客户端断线重连!
netty使用自带工具类实现断线重连和心跳包
永不掉线自动重连多用户管理系统【服务端_客户端】 1、掉线自动重连 2、检测账号到期时间限制 3、检测账号重复登陆 4、检测软件更新 5、检测账号黑名单 7、服务端踢出用户 8、服务端与客户端交互数据 9、...
mina连接,mina心跳连接,mina断线重连。其中客户端可直接用在android上。根据各方参考资料,经过自己的理解弄出来的。CSDN的资源分太难得了。
ESP8266开发,实现MQTT客户端,与MQTT服务器通信,断线重连,有软件安装、使用及详细的代码注释,方便快速搭建自己的物联网系统。
c#socket异步编程及断线重连。并怎样实现循环接受服务器的命令并处理。
一个C#使用tcpip的教学,分为Server端和Client端,实现互相发消息通讯,和断线重连。
mina客户端,服务器端的demo
c#Socket客户端断线重连封装类(可直接调用).rar
实现netty作为服务端,websocket连接成功,将channel保存到map集合,通过js发送心跳,服务端接收心跳信息并响应给客户端,当服务端断开时 客户端进行重连操作
netty断线重连机制及心跳,包含客户端和服务端,主要学习怎么重连和发送接收心跳,不满足心跳则关闭管道。
典型TCP/IP 通讯源码 实时连接状态查询 支持连接断开后自动重新连接
paho没分钟自动检测连接状态,若发现连接断开,则自动重连.
live555demo版支持断线重连,多路接入 live555demo版支持断线重连,多路接入 live555demo版支持断线重连,多路接入 live555demo版支持断线重连,多路接入 断线重连并没有完全实现,但是整个思路已经很清晰。上层已...
自己写的源码,请拿去用!