一种断线重连方法、装置及系统制造方法及图纸

技术编号:15442780 阅读:145 留言:0更新日期:2017-05-26 07:31
本发明专利技术公开了一种断线重连方法、装置及系统。服务器端处理断线重连的方法包括以下步骤:F1,对发送给客户端的消息按照发送次序进行连续编号生成序列号,并将发送的最近的N个消息存储到消息缓存队列中;N表示所述消息缓存队列中可存储的消息的总个数,N≥2;F2,接收客户端发送的断线重连请求以及客户端的最后一个消息序列号;F3,判断所述消息序列号是否落入消息缓存队列中的当前N个消息对应的序列号范围内,如果是,则将消息缓存队列中对应的序列号在所述消息序列号之后的消息发送给客户端;如果否,则将完整的客户端状态数据发送给客户端。本发明专利技术的断线重连方法可尽量节省用户的网络流量,提高同步效率,且游戏的连续性也较好。

Broken line reconnection method, device and system

The invention discloses a disconnection reconnection method, a device and a system thereof. The server reconnection processing method includes the following steps: F1, the message sent to the client for numbers according to the transmission order generated sequence number, and sends the recent N messages stored in the message queue; N represents the total number of the message can be stored in the buffer queue of the message, N = 2; F2, the client sends the received disconnection reconnection and finally a message sequence number of client requests; F3, judging whether the message sequence number will fall into the scope of the current sequence number of N messages corresponding to the message queue in the inside, if it is, it sends the message sequence number corresponding to the message buffer queue after the message sequence number to the client; if not, it will be a complete client state data sent to the client. The disconnection reconnection method of the invention can save the network flow of users as much as possible, improve synchronization efficiency, and have better continuity of game.

【技术实现步骤摘要】
一种断线重连方法、装置及系统
本专利技术涉及移动终端联网游戏技术,特别是涉及一种联网游戏中的断线重连方法、装置及系统。
技术介绍
目前大部分网络游戏采用的是TCP传输方式,客户端的断线主要是因为网络事件或者应用层的心跳超时判定的。为了应对网络的不稳定,保持游戏的连续性,移动终端网络游戏需设计断线重连的机制。目前最常见的断线重连是:断线重连后,重新刷新同步所有数据。具体地,一般的游戏场景中,当网络断开时,客户端会立即向服务器请求快速重连,服务器对客户端认证通过后将客户端的玩家的整个最新的数据同步下来,客户端刷新界面以保证看到的是最新的数据状态。上述断线重连方式下,一方面,会导致一定程度地打断游戏连续性,比如断线重连时正在打开的界面需要在重连后关闭以保证同步后的数据和视图的一致性。另一方面,当网络不稳定,频繁断线时,服务器会频繁地发送全部最新的同步数据给客户端,这样会耗费客户端用户较多的网络流量,且同步效率也较低。
技术实现思路
本专利技术所要解决的技术问题是:弥补上述现有技术的不足,提出一种断线重连方法、装置及系统,可尽量节省用户的网络流量,提高同步效率,且游戏的连续性也较好。本专利技术的技术问题通过以下的技术方案予以解决:一种服务器处理断线重连的方法,包括以下步骤:F1,对发送给客户端的消息按照发送次序进行连续编号生成序列号,并将发送的最近的N个消息存储到消息缓存队列中;N表示所述消息缓存队列中可存储的消息的总个数,N≥2;F2,接收客户端发送的断线重连请求以及客户端的最后一个消息序列号;F3,判断所述消息序列号是否落入消息缓存队列中的当前N个消息对应的序列号范围内,如果是,则将消息缓存队列中对应的序列号在所述消息序列号之后的消息发送给客户端;如果否,则将完整的客户端状态数据发送给客户端。一种客户端请求断线重连的方法,包括以下步骤:C1,向服务器发送断线重连请求以及所述客户端接收到的最后一个消息序列号;C2,接收所述服务器发送的所述最后一个消息序列号之后的消息或者完整的客户端状态数据。一种处理断线重连的装置,包括以下模块:序列号生成模块,用于对发送给客户端的消息按照发送次序进行连续编号生成序列号;消息缓存模块,用于存储所述服务器发送的最近的N个消息,N表示所述消息缓存队列中可存储的消息的总个数,N≥2;接收模块,用于接收客户端发送的断线重连请求以及消息序列号;判断模块,用于判断所述消息序列号是否落入消息缓存模块中的N个消息对应的序列号范围内;发送模块,用于在判断模块的判断结果为是时,将消息缓存模块中对应的序列号在所述消息序列号之后的消息发送给客户端;在判断模块的判断结果为否时,将完整的客户端状态数据发送给客户端。一种请求断线重连的装置,包括以下模块:发送模块:用于向服务器发送断线重连请求以及客户端接收到的最后一个消息序列号;接收模块,用于接收所述服务器发送的所述最后一个消息序列号之后的消息或者完整的客户端状态数据。一种断线重连系统,包括服务器和客户端;所述服务器中配置有如上所述的处理断线重连的装置;所述客户端中配置有如上所述的请求断线重连的装置。本专利技术与现有技术对比的有益效果是:本专利技术的断线重连方法,服务器发送消息时对消息连续编号序列化,并将最近的N个消息缓存到缓存队列中。当断线重连时,基于客户端的最后一个消息序列号与消息缓存队列中的消息的序列号的比对,灵活选择发送部分消息或者全部完整状态数据的同步方式。这样,在短时间频繁断线时,消息缓存队列中的N个消息虽有变化,但距离客户端的最后一个消息序列号仍然较近,客户端的最后一个序列号仍然在N个消息对应的序列号范围内,从而采取发送部分消息完成同步的方式,不必同步所有状态数据,以尽可能节省客户端的网络流量,且提高重连后同步更新效率。本专利技术中根据序列号和消息缓存来进行部分消息同步,从而可消耗少量的流量就可以完成同步,而且同步后直接接续中断处的游戏过程,连续性也较好。【附图说明】图1是本专利技术具体实施方式的服务器处理断线重连的方法的流程图;图2是本专利技术具体实施方式的客户端请求断线重连的方法的流程图;图3是本专利技术具体实施方式的服务器中处理断线重连的装置的结构示意图;图4是本专利技术具体实施方式的客户端中请求断线重连的装置的结构示意图。【具体实施方式】本专利技术的构思:对于目前的断线重连的同步方式,主要是同步整个状态数据,这种方式简单易于操作,但会导致客户端的流量浪费。这是因为:对于网络不稳定导致的断线,往往断线时间非常短,玩家的整个数据状态几乎不会有变化。即使玩家断线几分钟,客户端的数据状态和服务端的数据状态往往只相差几条修改命令。此时,如同步所有状态数据,发送的大部分数据是重复的,造成流量浪费和同步效率低。但如果同步时,仅将有变化的几条修改命令追加回来,客户端数据也能重新回到最新状态。鉴于此,本专利技术从服务器端出发,主动建立缓冲区记录发送的消息,并对消息进行编号,通过比较客户端重连请求时发送的最后一个消息序列号以及缓冲区中的消息的序列号,从而在短时间中断时,直接从中断处的消息处同步剩下的消息,这样可尽可能地节省客户端断线重连时同步数据所耗费的流量,提升同步效率,且游戏界面的连续性也较好。下面结合具体实施方式并对照附图对本专利技术做进一步详细说明。本具体实施方式中的断线重连方法包含两种数据同步方式:状态同步和命令同步。状态同步是客户端会重新向服务器请求一份完整数据,并刷新客户端强制达到最新的同步状态。这种方式同步完整的数据,需要消耗更多的网络流量。此种同步的优点是,不用担心断线期间丢失了多少数据,都可以保证数据最终状态的一致性。这种方式经流程设计以应用于网络长时间断线的情形下。命令同步是在上一次同步状态的基础上,向服务器请求丢失的消息,以追加命令的方式使得客户端数据重新回到一致状态。这种方式需服务端缓存少量的历史消息,客户端的断线重连则只需要少量的消息就可完成同步。经设计,以应用于网络短时间断线的情形,可更加高效和省流量地实现数据同步。具体实现时,从服务器的角度,服务器往客户端发送的消息需要增加一个序列号,并且需要一个固定大小的消息队列来缓存最近发送的消息。当客户端断线重连时,客户端先告诉服务器当前接收的最后一个消息序列号,服务器判断如果在消息缓存队列中,则针对剩余的消息启动增量的命令同步。否则,进行状态同步。如图1所示,为服务器端的处理断线重连的方法的流程图,包括以下步骤:F1,对发送给客户端的消息按照发送次序进行连续编号生成序列号,并将发送的最近的N个消息存储到消息缓存队列中;N表示所述消息缓存队列中可存储的消息的总个数,N≥2。该步骤中,即是服务器端对发送给客户端的消息进行序列化以及缓存处理。序列化时按照发送次序连续编号生成序列,以便后续基于序列号准确判断余下未发送的消息。对于缓存处理,开设合理大小尺寸的存储空间作为缓存区存储最近发送的多个消息。存储空间的大小可根据各款游戏中需发送的消息的数量以及大小来综合设定。存储空间太小,可能会导致后续过于频繁地启动状态同步。而太大时一方面占据过多的缓存空间,另一方面也会导致缓存的消息过多,则发送剩余消息所耗的流量也较大,当大于一次状态同步所需的流量时,将无法达到省流量的目的。设置缓存区可存储N个消息,N≥2,优选地,N的取值使得本文档来自技高网...
一种断线重连方法、装置及系统

【技术保护点】
一种服务器处理断线重连的方法,其特征在于:包括以下步骤:F1,对发送给客户端的消息按照发送次序进行连续编号生成序列号,并将发送的最近的N个消息存储到消息缓存队列中;N表示所述消息缓存队列中可存储的消息的总个数,N≥2;F2,接收客户端发送的断线重连请求以及客户端的最后一个消息序列号;F3,判断所述消息序列号是否落入消息缓存队列中的当前N个消息对应的序列号范围内,如果是,则将消息缓存队列中对应的序列号在所述消息序列号之后的消息发送给客户端;如果否,则将完整的客户端状态数据发送给客户端。

【技术特征摘要】
1.一种服务器处理断线重连的方法,其特征在于:包括以下步骤:F1,对发送给客户端的消息按照发送次序进行连续编号生成序列号,并将发送的最近的N个消息存储到消息缓存队列中;N表示所述消息缓存队列中可存储的消息的总个数,N≥2;F2,接收客户端发送的断线重连请求以及客户端的最后一个消息序列号;F3,判断所述消息序列号是否落入消息缓存队列中的当前N个消息对应的序列号范围内,如果是,则将消息缓存队列中对应的序列号在所述消息序列号之后的消息发送给客户端;如果否,则将完整的客户端状态数据发送给客户端。2.根据权利要求1所述的服务器处理断线重连的方法,其特征在于:步骤F1中,存储所述最近的N个消息时,由消息的序列号对N进行取模运算,根据取模运算的结果确定所述消息在所述消息缓存队列中的当前存储位置。3.根据权利要求1所述的服务器处理断线重连的方法,其特征在于:步骤F1中,存储所述最近的N个消息时,按照先进先出的原则将最近的N个消息存储到消息缓存队列中。4.根据权利要求1所述的服务器处理断线重连的方法,其特征在于:步骤F1中,N的取值使得传输全部N个消息所需的流量小于传输一次状态数据所需的流量。5.一种客户端请求断线重连的方法,其特征在于:包括以下步骤:C1,向服务器发送断线重连请求以及所述客户端接收到的最后一个消息序列号;C2,接收所述服务器发送的所述最后一个消息序列号之后的消息或者完整的...

【专利技术属性】
技术研发人员:张埃迪
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1