一种智能心跳方法与流程

文档序号:17726922发布日期:2019-05-22 02:34阅读:699来源:国知局
一种智能心跳方法与流程

本发明涉及移动通信技术,具体涉及通信过程中心跳控制方法。



背景技术:

心跳多用于基于长连的通讯系统中,用于持续的通知后台服务器,客户端依旧存活。心跳包就是双方所定义的一种用来通知对方存活的数据通讯结构。

周期性的发心跳包给服务器主要有以下几个原因:

1.通知服务器,客户端存活状态,一旦服务器监测到在某段时间没有收到客户端发来的心跳包,服务器就会释放曾经为此客户端分配的所有资源,例如socket连接;

2.定时的刷新nat内外网ip映射表,以便防止nat路由器移除映射表,导致客户端和服务器端的连接中断,特别是基于udp的服务,路由表更新非常频繁。

其中,最为简单的实现就是定期的给服务器发送心跳包,但是如何确定周期时间间隔为本技术中需要解决的问题。

由于不同网络拓扑结构在实现时,na节点会分配到不同的网路路由当中,不同的nat有不同的策略来处理映射表,一旦nat发现某个映射表对应ip在某段时间内没有上行或下行数据,nat就会移除此ip映射表,导致连接被中断。

由此可以额确定,以较短的时间间隔周期性地向服务器发送心跳包,会加大客户端尤其是移动设备的功耗和流量的消耗。



技术实现要素:

针对现有通信过程中客户端与目标服务器之间心跳控制方案所存在的问题,需要一种新的通信心跳控制案。

为此,本发明的目的在于提供一种智能心跳方法,可根据不同的网络情况,自动调整发送心跳的周期。

为了达到上述目的,本发明提供的智能心跳方法,包括:

在客户端与目标服务器之间建立socket连接,并且使得客户端相应的连接地址缓存在服务器;

客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送预定次数的心跳数据包,如果预定次数的心跳交互都成功,则进入自适应心跳计算状态;

客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加步长作为下一次发送心跳数据包的时间间隔,并针对心跳周期如此递归增加其步长,直至心跳失败;

取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,即successheart;

客户端以successheart为周期发送心跳,进入稳定态。

进一步的,在客户端与目标服务器之间基于udp的socket连接。

进一步的,将目标服务器配置成支持两种回执数据包:正常的心跳确认数据包和nat变更数据包。

进一步的,将目标服务器配置成在收到心跳数据包后,将现有地址与已缓存的上个发送心跳数据包的地址作比较:如果地址改变,目标服务器立即做相应更新,并为客户端回复一个nat变更的数据包;如果标识未改变,则向客户端返回一个针对收到的心跳数据包的确认数据包。

进一步的,将客户端配置成处于稳定态以successheart为周期发送心跳一段时间后,在successheart基础上增加步长,继续探测心跳最大值,以适应nat超时时间变长的情况;

如果客户端收到来自服务器端的nat变更数据包,则客户端取最近一次successheart周期一半的值作为基础,重新探测心跳周期最大值。

进一步的,如果客户端连续预定次数的心跳包都没有得到服务端的回执,则认为服务端已故障,客户端关闭socket连接。

本发明提供的方案通过客户端向目标服务器按照递增且非固定的时间间隔发送心跳数据包,可以根据不同的网络情况,自动调整发送心跳的周期,有效解决固定周期的心跳给客户端带来过多功耗和流量的消耗以及给服务器端带来的巨大访问压力的问题。

附图说明

以下结合附图和具体实施方式来进一步说明本发明。

图1为本发明实例中客户端与目标服务器之间进行智能心跳的原理图;

图2为本发明实例中客户端发向目标服务器的心跳数据结构示意图;

图3为本发明实例中目标服务器收到心跳数据后向客户端发送的回执数据示意图;

图4为本发明实例中客户端和服务端对心跳数据包处理的逻辑流程图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。

在用户通过客户端与服务器建立网络通信连接过程中,在客户端断开与服务器的通信之前,客户端为了告知服务器其为在线状态,通过向目标服务器发送心跳数据包,以确保通信连接的有效性。

参见图2,客户端向目标服务器发送心跳数据包的目的在于与目标服务器保持长连接,至于心跳数据包中包含的具体内容没有特别的规定,不过,为了减轻目标服务器对心跳数据包的处理资源,心跳数据包一般都是很小的包,或者只包含包头的一个空包。本发明实施例对心跳数据包中包含的具体内容不作限定。

同时,目标服务器收到来自客户端的心跳包后,相应地向客户端回执一个数据包。目标服务器配置成支持两种回执数据包:正常的心跳确认数据包和nat变更数据包。如图3所示,如果服务端检测到端口号改变,则将nat字段值置为1,否则将其置为0。

若,客户端每隔固定时间间隔会向服务器发送一次心跳数据包请求,这样会增大客户端的功耗,也会增加服务器的访问负荷,影响服务器的响应速度。

对此,本实例提供智能心跳方案,通过客户端向目标服务器按照递增且非固定的时间间隔发送心跳数据包,可以根据不同的网络情况,自动调整发送心跳的周期,能够降低客户端的功耗和流量消耗,同时也不会给服务器端带来的巨大访问压力。

参见图1,其所示为智能心跳方案的基本原理图。本智能心跳方案应用于客户端,在客户端将心跳数据包发送给目标服务器时,引入短心跳机制和自适应心跳机制,以控制客户端智能的向目标服务器发送心跳数据包。

参见图4,其所示为应用本智能心跳方案的客户端向目标服务器智能送心跳数据包的一种示例流程。

在实施智能送心跳数据包前,客户端与目标服务器之间首先需要建立基于udp的socket连接;同时在建立连接的过程中,服务器缓存相应客户端的连接地址。

由此,首先由客户端启动心跳线程,并向目标服务器发送心跳数据包。

在具体实施时,客户端先用预设短心跳周期发三次心跳,如果三次心跳交互都成功,则客户端进入自适应心跳状态,否则断开连接。

接着,进入自适应心跳状态,在该状态下基于自适应心跳机制探测心跳最大值。客户端在预设短心跳周期基础上增加步长作为下一次发送心跳数据包的时间间隔,并针对心跳周期递归增加其步长,直至收到来自服务器的nat变更数据包,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,即successheart,然后客户端以successheart为周期发送心跳,进入稳定态。

这里取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,能够有效规避临界值。

接着,处于稳定态的客户端将以successheart为周期发送心跳,一段时间后,在successheart基础上增加步长,继续探测心跳最大值,以适应nat超时时间变长的情况。

目标服务器收到心跳数据包后,将现有地址与已缓存的地址作比较:如果地址改变,目标服务器立即做相应更新,并为客户端回复一个nat变更的数据包;如果地址未改变,则向客户端返回一个针对该心跳数据包的确认数据包。

与此同时,如果客户端收到来自服务器端的nat变更数据包,则客户端取最近一次successheart周期一半的值作为基础,重新探测心跳周期最大值。

如果客户端连续三个心跳包都没有得到服务端的回执,则认为服务端已故障,客户端关闭socket连接。

整个过程通过客户端向目标服务器按照递增且非固定的时间间隔发送心跳数据包,实现可以根据不同的网络情况,自动调整发送心跳的周期。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1