一种智能心跳方法技术

技术编号:21167210 阅读:29 留言:0更新日期:2019-05-22 09:41
本发明专利技术公开了一种智能心跳方法,涉及移动通信领域。该方法在客户端引入短心跳机制和自适应心跳机制,通过客户向目标服务器按照递增且非固定的时间间隔发送心跳数据包,根据不同的网络情况,自动调整发送心跳的周期。由此来解决现有技术中固定周期的心跳给客户端带来过多功耗和流量的消耗以及给服务器端带来的巨大访问压力的问题。

An Intelligent Heart Rate Method

The invention discloses an intelligent heartbeat method, which relates to the field of mobile communication. This method introduces short heartbeat mechanism and adaptive heartbeat mechanism in the client side, sends heartbeat data packets to the target server at incremental and non-fixed time intervals, and automatically adjusts the cycle of sending heartbeat according to different network conditions. In order to solve the problem that fixed cycle heartbeat brings excessive power consumption and traffic consumption to the client and huge access pressure to the server in the existing technology.

【技术实现步骤摘要】
一种智能心跳方法
本专利技术涉及移动通信技术,具体涉及通信过程中心跳控制方法。
技术介绍
心跳多用于基于长连的通讯系统中,用于持续的通知后台服务器,客户端依旧存活。心跳包就是双方所定义的一种用来通知对方存活的数据通讯结构。周期性的发心跳包给服务器主要有以下几个原因: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.智能心跳方法,其特征在于,包括:在客户端与目标服务器之间建立socket连接,并且使得客户端相应的连接地址缓存在服务器;客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送预定次数的心跳数据包,如果预定次数的心跳交互都成功,则进入自适应心跳计算状态;客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加步长作为下一次发送心跳数据包的时间间隔,并针对心跳周期如此递归增加其步长,直至心跳失败;取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,即successHeart;客户端以successHeart为周期发送心跳,进入稳定态。

【技术特征摘要】
1.智能心跳方法,其特征在于,包括:在客户端与目标服务器之间建立socket连接,并且使得客户端相应的连接地址缓存在服务器;客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送预定次数的心跳数据包,如果预定次数的心跳交互都成功,则进入自适应心跳计算状态;客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加步长作为下一次发送心跳数据包的时间间隔,并针对心跳周期如此递归增加其步长,直至心跳失败;取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,即successHeart;客户端以successHeart为周期发送心跳,进入稳定态。2.根据权利要求1所述的智能心跳方法,其特征在于,在客户端与目标服务器之间基于udp的socket连接。3.根据权利要求1所述的智能心跳方法,其特征在于,将目标服务器配置成支持两种回执数据包:正常的心跳确认数据包和nat变更数据包。...

【专利技术属性】
技术研发人员:杨阳郑富强
申请(专利权)人:上海数果科技有限公司
类型:发明
国别省市:上海,31

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

1