CN107612789B - 一种客户端的心跳间隔调整方法及装置 - Google Patents
一种客户端的心跳间隔调整方法及装置 Download PDFInfo
- Publication number
- CN107612789B CN107612789B CN201711095949.4A CN201711095949A CN107612789B CN 107612789 B CN107612789 B CN 107612789B CN 201711095949 A CN201711095949 A CN 201711095949A CN 107612789 B CN107612789 B CN 107612789B
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- heartbeat interval
- time
- current
- moment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供了一种客户端的心跳间隔调整方法及装置,客户端接收到包含端口映射关系过期信息的第一类心跳确认包时记为第一时刻;客户端接收到包含端口映射关系未过期的第二类心跳确认包记为第二时刻;客户端根据第二时刻、第一时刻及当前心跳间隔调整心跳间隔。当客户端再次接收到包含第一类心跳确认包时,记为第三时刻,并根据第三时刻、第一时刻及当前心跳间隔调整心跳间隔。该方法能够根据当前网络质量动态调整心跳间隔,从而保证不同网络质量环境下客户端与服务器之间通信的可靠性,而且,尽可能地降低服务器的压力。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种客户端的心跳间隔调整方法及装置。
背景技术
随着移动互联网的普及,即时通讯、实时视频工具等移动端应用程序成为人们日常生活中的重要工具。这些实时通讯类APP需要客户端与服务器之间保持实时通信的能力,以保证客户端与服务器之间的消息及时到达。
心跳机制是保持长连接的重要技术手段,心跳机制是定时发送一个自定义的结构体(即,心跳包),让对方知道自己还活着,以确保连接的有效性的机制。心跳包之所以叫心跳包是因为它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着,以及,刷新端口映射(端口映射就是将主机的IP地址的一个端口映射到局域网中一台机器,当用户访问这个IP的这个端口时,服务器自动将请求映射到对应局域网分机)的老化时间。端口映射老化时间是指主机IP地址的一个端口映射到局域网机器的有效时间,例如,端口映射老化时间为120s,则说明端口映射关系的有效时间是120s,120s之后,该端口映射关系将失效。
由于移动互联网的复杂性和不可靠性,依赖TCP连接的KeepAlive机制实现的长连接不能保证客户端和服务器之间连接的可用性。通常情况下,客户端与服务器之间的实时连接依靠应用层的心跳包实现。如果心跳机制采用固定的心跳间隔,处于端口映射老化时间很短的网络环境下的客户端的连通度(即,一段时间内客户端与服务器可以连通的时长占总时长的比例)可能无法满足实时通信的需求。但是,如果为了保证此类客户端的连接可用性而减小心跳间隔,会给服务器带来极高的负荷,并且,将导致移动设备的资源消耗过大,例如电量、数据流量(当采用数据流量上网时)。
发明内容
有鉴于此,本发明的目的在于提供一种移动端应用程序的心跳机制间隔调整方法及装置,以解决固定心跳间隔不能适应不同网络质量环境的技术问题。
第一方面,本申请提供了一种客户端的心跳间隔调整方法,包括:
按照当前网络环境对应的当前心跳间隔发送心跳包;
当接收到服务器返回的包含端口映射关系过期信息的第一类心跳确认包时,记录接收到所述第一类心跳确认包的时刻为第一时刻;
在所述第一时刻之后,且再次接收到所述第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时,将接收所述第二类心跳确认包的时刻记为第二时刻;
根据所述第二时刻、所述第一时刻及所述当前心跳间隔之间的关系,调整所述当前心跳间隔;
在所述第一时刻之后,当再次接收到所述第一类心跳确认包时,将接收所述第一类心跳确认包的时刻记为所述第三时刻;
根据所述第三时刻、所述第一时刻及所述当前心跳间隔之间的关系,调整所述当前心跳间隔。
可选地,所述根据所述第二时刻、所述第一时刻及所述当前心跳间隔之间的关系,调整所述当前心跳间隔,包括:
计算所述第二时刻与所述第一时刻之间的时间差,并计算所述时间差与所述当前心跳间隔之间的比值;
当所述比值大于第一预设值时,按照第一预设步长增加所述当前心跳间隔。
可选地,所述根据所述第三时刻、所述第一时刻及所述当前心跳间隔之间的关系,调整所述当前心跳间隔,包括:
计算所述第三时刻与所述第一时刻之间的时间差,并计算所述时间差与所述当前心跳间隔之间的比值;
当所述比值小于第二预设值时,按照第二预设步长缩短所述当前心跳间隔,得到更新后的心跳间隔;
当所述比值不小于所述第二预设值时,或者,在所述得到更新后的心跳间隔后,将所述第一时刻更新为所述第三时刻,并返回执行所述在所述第一时刻之后,且再次接收到所述第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时,将接收所述第二类心跳确认包的时刻记为第二时刻的步骤。
可选地,所述方法还包括:
若当前网络环境为无线保真网络,获取所述无线保真网络对应的目标心跳间隔,其中,所述第二时刻与所述第一时刻间的时间差,与所述目标心跳间隔之间的比值小于或等于所述第一预设值;或者,所述第三时刻与所述第一时刻的时间差,与所述目标心跳间隔之间的比值大于或等于所述第二预设值;
保存所述目标心跳间隔,以及所述无线保真网络的服务集标识SSID。
可选地,所述方法还包括:
当检测到客户端断开之后再次连接到目标SSID对应的无线保真网络时,将所述目标SSID对应的目标心跳间隔设置为所述目标SSID的当前心跳间隔。
第二方面,本申请还提供一种客户端的心跳间隔调整装置,包括:
发送单元,用于按照当前网络环境对应的当前心跳间隔发送心跳包;
第一记录单元,用于当接收到服务器返回的包含端口映射关系过期信息的第一类心跳确认包时,记录接收到所述第一类心跳确认包的时刻为第一时刻;
第二记录单元,用于在所述第一时刻之后,且再次接收到所述第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时,将接收所述第二类心跳确认包的时刻记为第二时刻;
第一心跳间隔调整单元,用于根据所述第二时刻,所述第一时刻及所述当前心跳间隔之间的关系,调整所述当前心跳间隔;
第三记录单元,用于在所述第一时刻之后,当再次接收到所述第一类心跳确认包时,将接收所述第一类心跳确认包的时刻记为所述第三时刻;
第二心跳间隔调整单元,用于根据所述第三时刻、所述第一时刻及所述当前心跳间隔之间的关系,调整所述当前心跳间隔。
可选地,所述第一心跳间隔调整单元,包括:
第一计算子单元,用于计算所述第二时刻与所述第一时刻之间的时间差,并计算所述时间差与所述当前心跳间隔之间的比值;
第一心跳间隔调整子单元,用于当所述比值大于第一预设值时,按照第一预设步长增加所述当前心跳间隔。
可选地,所述第二心跳间隔调整子单元,包括:
第二计算子单元,用于计算所述第三时刻与所述第一时刻之间的时间差,并计算所述时间差与所述当前心跳间隔之间的比值;
第二心跳间隔调整子单元,用于当所述比值小于第二预设值时,按照第二预设步长缩短所述当前心跳间隔;
更新子单元,用于在得到更新后的心跳间隔之后,或者,确定所述比值不小于所述第二预设值后,将所述第一时刻更新为所述第三时刻,并触发所述第二记录单元记录所述第二时刻。
可选地,所述装置还包括:
获取单元,用于若当前网络环境为无线保真网络,获取所述无线保真网络对应的目标心跳间隔,其中,所述第二时刻与所述第一时刻间的时间差,与所述目标心跳间隔之间的比值小于或等于所述第一预设值;或者,所述第三时刻与所述第一时刻的时间差,与所述目标心跳间隔之间的比值大于或等于所述第二预设值;
保存单元,用于保存所述无线保真网络对应的目标心跳间隔,以及所述无线保真网络的服务集标识SSID;
可选地,所述装置还包括:
心跳间隔配置单元,用于当检测到客户端断开之后再次连接到目标SSID对应的无线保真网络时,将所述目标SSID对应的目标心跳间隔设置为所述目标SSID的当前心跳间隔。
第三方面,本申请提供了一种存储介质,其上存储有程序,所述程序被处理器执行时实现第一方面任一项所述客户端的心跳间隔调整方法。
第四方面,本申请提供了一种处理器,所述处理器用于运行程序,所述程序运行时执行第一方面任一项所述的客户端的心跳间隔调整方法。
本申请实施例提供的客户端的心跳间隔调整方法,客户端按照预设的心跳间隔发送心跳包。服务器根据接收到的心跳包确认端口映射关系是否过期,并将端口映射关系是否过期的信息包含在心跳确认包中发送给客户端。客户端记录接收到包含端口映射关系过期信息的第一类心跳确认包的时刻为第一时刻;在第一时刻之后,且再次接收到第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时记为第二时刻;然后,客户端根据第二时刻、第一时刻及当前心跳间隔调整当前心跳间隔;第一时刻之后,当再次接收到第一类心跳确认包时,记为第三时刻;然后,根据第三时刻、第一时刻和当前心跳间隔之间的关系调整当前心跳间隔。该方法能够根据当前网络质量动态调整心跳间隔,从而保证不同网络质量环境下客户端与服务器之间通信的可靠性,而且,降低服务器的压力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例一种客户端的心跳间隔调整方法流程图;
图2是本申请实施例一种第一、第二和第三时刻的示意图;
图3是本申请实施例一种增加心跳间隔过程的流程图;
图4是本申请实施例一种缩短心跳间隔过程的流程图;
图5是本申请实施例另一种客户端的心跳间隔调整方法流程图;
图6是本申请实施例一种客户端的心跳间隔调整装置的示意框图;
图7是本申请实施例一种心跳间隔增加单元的示意框图;
图8是本申请实施例一种心跳间隔缩短单元的示意框图;
图9是本申请实施例另一种客户端的心跳间隔调整装置的示意框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,示出了本申请实施例一种客户端的心跳间隔调整方法,该方法应用于客户端中,客户端向服务器发送心跳包,服务器接收到心跳包后返回心跳确认包,并通过心跳确认包告知客户端当前IP地址和端口是否和上次发送心跳包时相同。如图1所示,该方法可以包括以下步骤:
S110,客户端按照当前网络环境对应的当前心跳间隔发送心跳包。
初始化时,根据不同的网络环境设置心跳间隔上限、心跳间隔下限,以及默认心跳间隔。例如,无线保真网络(Wireless Fidelity,Wi-Fi)的心跳间隔上限是T1,移动网络的心跳间隔上限是T2,例如,T1为50s,T2为30s;Wi-Fi网络和移动网络的心跳间隔下限为T3,例如10s。Wi-Fi网络和移动网络的默认心跳间隔是t,例如,t可以是30s。
其中,移动网络是指移动运营商所构造并运营的可进行移动通信的通讯网络。
初始时,当前心跳间隔就是默认心跳间隔,客户端可以按照默认心跳间隔向服务器发送心跳包;在其它情况下,当前心跳间隔即客户端在当前网络环境中正在使用的心跳间隔。
S120,当客户端接收到服务器返回的包含端口映射关系过期信息的第一类心跳确认包时,记录接收到该第一类心跳确认包的时刻为第一时刻。
服务器返回的心跳确认包中包含端口映射关系是否过期的信息,如果服务器根据客户端发送的心跳包确认与客户端之间的端口映射关系已经过期,则将端口映射关系过期信息包含在心跳确认包中发送给客户端,此类心跳确认包称为第一类心跳确认包;如果服务器根据客户端发送的心跳包确认与客户端之间的端口映射关系未过期,则将端口映射关系未过期信息包含在心跳确认包中发送给客户端,此类心跳确认包称为第二类心跳确认包。
客户端接收到服务器返回的心跳确认包后,解析该心跳确认包,获得该心跳确认包中包含端口映射关系是否过期的信息,当心跳确认包中包含端口映射关系过期信息时,记录接收到该心跳确认包的时刻为第一时刻t1。
S130,在第一时刻之后,且再次接收到该第一类心跳确认包之前,当客户端接收到包含端口映射关系未过期信息的第二类心跳确认包时,记录接收到该第二类心跳确认包的时刻为第二时刻。
第一时刻之后,客户端会继续按当前心跳间隔向服务器发送心跳包,并接收服务器返回的心跳确认包。每当接收到第二类心跳确认包时,都会记录接收到该第二类心跳确认包的时刻为第二时刻t2。
图2示出了第一、第二、第三时刻的位置关系示意图。
初始化后,当客户端首次接收到服务器返回的第一类心跳确认包后,记录接收到该第一类心跳确认包的时刻为t1。
在t1之后,且未再次接收到第一类心跳确认包之前,每次接收到第二类心跳确认包时,都记录为t2(确定是否增加心跳间隔时使用)。
在t1时刻之后,客户端再次接收到第一类心跳确认包后标记为第三时刻t3(确定是否缩短心跳间隔时使用)。然后,根据t3、t1和当前心跳间隔判断完是否需要缩短心跳间隔;判断完之后,无论判断结果如何都将t1更新为t3。换言之,在客户端每接收到第一类心跳确认包,且判断完是否缩短心跳间隔后,才将t1更新为本次接收到第二类心跳确认包的时刻。
S140,根据第二时刻、第一时刻及当前心跳间隔之间的关系,调整当前心跳间隔。
在本申请的一个实施例中,如图3所示,S140可以包括S141~S144:
S141,计算第二时刻与第一时刻之间的时间差,并计算该时间差与当前心跳间隔之间的比值。
例如,当前心跳间隔为t,所述比值记为r,则r=(t2-t1)/t。
S142,判断该比值是否大于第一预设值,如果是,则执行S143;如果否,则执行S144。
第一预设值是一个常数M,M的取值根据经验或有限次试验确定,例如,M可以是5。
S143,按照第一预设步长增加当前心跳间隔。
如果r>M,则确定需要增加当前心跳间隔t,并将当前心跳间隔增加第一预设步长。
例如,第一预设步长为d1,则t′=t+d1,t′为更新后的心跳间隔,此后,客户端按照更新后的心跳间隔t′向服务器发送心跳包,即更新当前心跳间隔后,返回执行S110。
在本申请的一个实施例中,第一预设步长d1与当前心跳间隔正相关,例如,t越大,则d1越大;t越小,则d1越小;而且,d1最大不超过某个设定值,该设定值可以根据试验确定。
此外,更新后的当前心跳间隔不能超过当前网络环境对应的心跳间隔上限。心跳间隔上限即初始化时设定的Wi-Fi网络和移动网络分别对应的心跳间隔上限。
S144,确定不需要增加当前心跳间隔。
如果r≤M,则确定不需要增加当前心跳间隔t。
S150,在第一时刻之后,当再次接收到第一类心跳确认包时,记录接收到该第一类心跳确认包的时刻为第三时刻。
在第一时刻之后,客户端仍按当前心跳间隔向服务器发送心跳包,并接收服务器返回的心跳确认包,当接收到的心跳确认包中包含端口映射关系过期信息时,记录接收到该心跳确认包的时刻为第三时刻t3。
S160,根据第一时刻、第三时刻和当前心跳间隔之间的关系,调整当前心跳间隔。
在本申请的一个实施例中,如图4所示,S160可以包括:
S161,计算第三时刻与第一时刻之间的时间差,并计算该时间差与当前心跳间隔之间的比值。
例如,当前心跳间隔是t,所述比值记为r,则r=(t3-t1)/t。
S162,判断该比值是否小于第二预设值,如果是,则执行S163;如果不小于,则执行S164。
第二预设值是一个常数N,N的取值可以根据经验或有限次试验确定,而且,N大于M。例如,若M是5,则N可以是10。
M和N的含义是在一个特定、稳定的网络环境中运行该心跳间隔调整策略足够长的时间,得到了最优心跳间隔t0(假设此时的心跳间隔上调幅度为10秒),此时在两次心跳之间,前t0-10秒客户端和服务器之间通信成功率为100%,后10秒客户端和服务器之间通信成功率在M/(M+1)×100%到N/(N+1)×100%之间。
S163,按照第二预设步长缩短当前心跳间隔。
如果r<N,则确定需要缩短当前心跳间隔t,并将当前心跳间隔缩短第二预设步长,得到更新后的心跳间隔。
第二预设步长与当前心跳间隔t正相关,例如,当前心跳间隔t越大,则d2越大;如果t越小,则d2越小;d2的最大幅度不超过某个设定值,该设定值可以根据多次试验确定。而且,更新后的心跳间隔不能小于心跳间隔下限T3,例如,T3为10s。
S164,确定不需要缩短当前心跳间隔。
如果r≥N,则确定不需要缩短当前心跳间隔t。
S165,将第一时刻更新为第三时刻,并返回执行S130。
执行完S163之后,执行S165;执行完S164之后,执行S165。
本申请实施例提供的客户端的心跳间隔调整方法,客户端按照预设的心跳间隔发送心跳包。服务器根据接收到的心跳包向客户端返回心跳确认包。心跳确认包中包含端口映射关系是否过期的信息。客户端记录接收到包含端口映射关系过期信息的第一类心跳确认包的时刻为第一时刻;在第一时刻之后,且再次接收到第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时记为第二时刻;然后,根据第二时刻、第一时刻及当前心跳间隔之间的关系调整心跳间隔。在第一时刻之后,当客户端再次接收到第二类心跳确认包后,记录此时刻为第三时刻;根据第三时刻、第一时刻及当前心跳间隔之间的关系,调整当前心跳间隔。该方法能够根据当前网络质量动态调整心跳间隔,从而保证不同网络质量环境下客户端与服务器之间通信的可靠性,而且,尽可能地降低服务器的压力。
请参见图5,示出了本申请实施例另一种客户端的心跳间隔调整方法的流程图,该方法在图1所示实施例的基础上,还包括以下步骤:
S210,若当前网络环境为Wi-Fi网络,则获取该Wi-Fi网络对应的最优心跳间隔。
最优心跳间隔是指满足第一预设条件或第二预设条件的心跳间隔,其中,第一预设条件是指r值小于或等于M;第二预设条件是指r值大于或等于N。此处的最优心跳间隔即权利要求所述的目标心跳间隔。
S220,保存该Wi-Fi网络对应的最优心跳间隔及该Wi-Fi网络的服务集标识(Service Set Identifier,SSID)。
S230,当检测到客户端再次连接到该SSID对应的Wi-Fi网络时,直接将该SSID对应的最优心跳间隔值设置为当前心跳间隔。
当客户端首次连接至某个SSID对应的Wi-Fi网络时,根据Wi-Fi网络的网络质量按照上述实施例的心跳间隔调整策略调整心跳间隔得到该SSID对应的最优心跳间隔。通常Wi-Fi网络的网络质量变化不大,因此,当得到该Wi-Fi网络对应的最优心跳间隔时,可以记录该最优心跳间隔;当客户端断开后再次接入该SSID对应的Wi-Fi网络时,可以将当前心跳间隔设置为该最优心跳间隔,然后,再根据网络质量调整心跳间隔值。
如果客户端中没有记录Wi-Fi网络对应的最优心跳间隔时,将当前心跳间隔可以设置为默认心跳间隔,并按照上述实施例提供的心跳间隔调整策略调整心跳间隔。
本实施例提供的客户端的心跳间隔调整方法,在获得Wi-Fi网络的最优心跳间隔后,保存该最优心跳间隔。当客户端断开后再次接入该Wi-Fi网络时,将初始心跳间隔值直接设置为保存的最优心跳间隔。由于Wi-Fi网络的网络质量变化不大,因此,初始时就采用了该网络对应的最优心跳间隔值,这样大大减少了心跳间隔的调整时间,提高了调整效率。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
相应于上述的客户端的心跳间隔调整方法实施例,本申请还提供了客户端的心跳间隔调整装置实施例。
请参见图6,示出了本申请实施例一种客户端的心跳间隔调整装置的框图,该装置应用于客户端中,如图6所示,该装置可以包括:发送单元110、第一记录单元120、第二记录单元130、第一心跳间隔调整单元140、第三记录单元150和第二心跳间隔调整单元160。
发送单元110,用于按照当前网络环境对应的当前心跳间隔发送心跳包。
不同类型的网络对应不同得到心跳间隔上限、心跳间隔下限及默认心跳间隔。例如,Wi-Fi网络的心跳间隔上限是50s,心跳间隔下限是10s,默认心跳间隔是30s;移动网络的心跳间隔上限是30s、心跳间隔下限是10s,默认心跳间隔是30s。
初始时,当前心跳间隔就是默认心跳间隔,客户端可以按照默认心跳间隔向服务器发送心跳包;在其它情况下,当前心跳间隔即客户端在当前网络环境中正在使用的心跳间隔。
第一记录单元120,用于当接收到服务器返回的包含端口映射关系过期信息的第一类心跳确认包时,记录接收到该第一类心跳确认包的时刻为第一时刻。
客户端接收到服务器返回的心跳确认包后,解析该心跳确认包,获得该心跳确认包中包含端口映射关系是否过期的信息,当心跳确认包中包含的端口映射关系过期的信息时,记录接收到该心跳确认包的时刻为第一时刻t1。
第二记录单元130,用于在第一时刻之后,且再次接收到该第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时,记录接收到该第二类心跳确认包的时刻为第二时刻。
第一时刻之后,客户端会继续按当前心跳间隔向服务器发送心跳包,并接收服务器返回的心跳确认包。每当接收到第二类心跳确认包时,都会记录接收到该第二类心跳确认包的时刻为第二时刻t2。
第一心跳间隔调整单元140,用于根据第二时刻,第一时刻及当前心跳间隔之间的关系,调整当前心跳间隔。
在本申请的一个实施例中,如图7所示,第一心跳间隔调整单元140可以包括:第一计算子单元141和第一心跳间隔调整子单元142。
第一计算子单元141,用于计算第二时刻与第一时刻之间的时间差,并计算该时间差与当前心跳间隔之间的比值。
例如,当前心跳间隔为t,所述比值记为r,则r=(t2-t1)/t。
第一心跳间隔调整子单元142,用于当该比值大于第一预设值时,按照第一预设步长增加当前心跳间隔。
当该比值小于或等于第一预设值时,不调整当前心跳间隔。
第一预设值是一个常数M,M的取值根据经验或有限次试验确定,例如,M可以是5。如果r>M,则确定需要增加当前心跳间隔t,并将当前心跳间隔增加第一预设步长。例如,第一预设步长为d1,则t′=t+d1,t′为更新后的心跳间隔,此后,客户端按照更新后的心跳间隔t′向服务器发送心跳包。如果r≤M,则不需要增加当前心跳间隔。
在本申请的一个实施例中,第一预设步长d1与当前心跳间隔正相关,例如,t越大,则d1越大;t越小,则d1越小;而且,d1最大不超过某个设定值,该设定值可以根据试验确定。
此外,更新后的当前心跳间隔不能超过当前网络环境对应的心跳间隔上限。心跳间隔上限即初始化时设定的Wi-Fi网络和移动网络分别对应的心跳间隔上限。
第三记录单元150,用于在第一时刻之后,当再次接收到第一类心跳确认包时,将接收第一类心跳确认包的时刻记为所述第三时刻。
在第一时刻之后,客户端仍按当前心跳间隔向服务器发送心跳包,并接收服务器返回的心跳确认包,当接收到的心跳确认包中包含端口映射关系过期信息时,记录接收到该心跳确认包的时刻为第三时刻t3。
第二心跳间隔调整单元160,用于根据所述第三时刻、所述第一时刻及所述当前心跳间隔之间的关系,调整所述当前心跳间隔。
在本申请的一个实施例中,如图8所示,该第二心跳间隔调整子单元160可以包括:第二计算子单元161、第二心跳间隔调整子单元162和更新子单元163。
第二计算子单元161,用于计算第三时刻与第一时刻之间的时间差,并计算该时间差与当前心跳间隔之间的比值。
例如,当前心跳间隔是t,所述比值记为r,则r=(t3-t1)/t。
第二心跳间隔调整子单元162,用于当所述比值小于第二预设值时,按照第二预设步长缩短所述当前心跳间隔。
第二预设值是一个常数N,N的取值可以根据经验或有限次试验确定,而且,N大于M。例如,若M是5,则N可以是10。
如果r<N,则确定需要缩短当前心跳间隔t,并将当前心跳间隔缩短第二预设步长,得到更新后的心跳间隔。例如,第二预设步长为d2,则t′=t-d2,t′为更新后的当前心跳间隔,此后,客户端按照更新后的当前心跳间隔t′向服务器发送心跳包。
如果r≥N,则确定不需要缩短当前心跳间隔t。
第二预设步长与当前心跳间隔t正相关,例如,当前心跳间隔t越大,则d2越大;如果t越小,则d2越小;d2的最大幅度不超过某个设定值,该设定值可以根据多次试验确定。而且,更新后的心跳间隔不能小于心跳间隔下限T3,例如,T3为10s。
更新子单元163,用于在得到更新后的心跳间隔之后,或者,确定比值不小于第二预设值后,将第一时刻更新为第三时刻,并触发第二记录单元记录第二时刻。
本申请实施例提供的客户端的心跳间隔调整装置,客户端按照预设的心跳间隔发送心跳包。服务器根据接收到的心跳包向客户端返回心跳确认包。心跳确认包中包含端口映射关系是否过期的信息。客户端记录接收到包含端口映射关系过期信息的第一类心跳确认包的时刻为第一时刻;在第一时刻之后,且再次接收到第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时记为第二时刻;然后,根据第二时刻、第一时刻及当前心跳间隔之间的关系调整心跳间隔。在第一时刻之后,当客户端再次接收到第二类心跳确认包后,记录此时刻为第三时刻;根据第三时刻、第一时刻及当前心跳间隔之间的关系,调整当前心跳间隔。该装置能够根据当前网络质量动态调整心跳间隔,从而保证不同网络质量环境下客户端与服务器之间通信的可靠性,而且,尽可能地降低服务器的压力。
图9示出了本申请实施例另一种客户端的心跳间隔调整装置的框图,如图9所示,该装置在图6所示实施例的基础上还包括:获取单元210、保存单元220和设置单元230。
获取单元210,用于若当前网络环境为Wi-Fi网络,获取Wi-Fi网络对应的最优心跳间隔。
最优心跳间隔是指满足第一预设条件或第二预设条件的心跳间隔,其中,第一预设条件是指r值小于或等于M;第二预设条件是指r值大于或等于N。
保存单元220,用于保存该Wi-Fi网络对应的最优心跳间隔,以及Wi-Fi网络的SID。
设置单元230,用于当检测到客户端断开之后再次连接到所述无线保真网络时,将所述无线保真网络的最优心跳间隔设置为所述无线保真网络的当前心跳间隔。
当客户端首次连接至某个SSID对应的Wi-Fi网络时,根据Wi-Fi网络的网络质量按照上述实施例的心跳间隔调整策略调整心跳间隔得到该SSID对应的最优心跳间隔。
通常Wi-Fi网络的网络质量变化不大,因此,当得到该Wi-Fi网络对应的最优心跳间隔时,可以记录该最优心跳间隔;当客户端断开后再次接入该SSID对应的Wi-Fi网络时,可以将当前心跳间隔设置为该最优心跳间隔,然后,再根据网络质量调整心跳间隔值。
如果客户端中没有记录Wi-Fi网络对应的最优心跳间隔时,将当前心跳间隔可以设置为默认心跳间隔,并按照上述实施例提供的心跳间隔调整策略调整心跳间隔。
本实施例提供的客户端的心跳间隔调整装置,在获得Wi-Fi网络的最优心跳间隔后,保存该最优心跳间隔。当客户端断开后再次接入该Wi-Fi网络时,将初始心跳间隔值直接设置为保存的最优心跳间隔。由于Wi-Fi网络的网络质量变化不大,因此,初始时就采用了该网络对应的最优心跳间隔值,这样大大减少了心跳间隔的调整时间,提高了调整效率。
另一方面,本申请还提供一种存储介质,其上存储有程序,该程序被处理器执行时实现上述的客户端的心跳间隔调整方法实施例。
又一方面,本申请还提供一种处理器,该处理器用于运行程序,该程序运行时执行上述客户端的心跳间隔调整方法实施例。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种客户端的心跳间隔调整方法,其特征在于,包括:
按照当前网络环境对应的当前心跳间隔发送心跳包;
当接收到服务器返回的包含端口映射关系过期信息的第一类心跳确认包时,记录接收到所述第一类心跳确认包的时刻为第一时刻;
在所述第一时刻之后,且再次接收到所述第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时,将接收所述第二类心跳确认包的时刻记为第二时刻;
当所述第二时刻、所述第一时刻及所述当前心跳间隔之间的关系满足预设增大关系时,增大所述当前心跳间隔;
在所述第一时刻之后,当再次接收到所述第一类心跳确认包时,将接收所述第一类心跳确认包的时刻记为第三时刻;
当所述第三时刻、所述第一时刻及所述当前心跳间隔之间的关系满足预设缩短关系时,缩短所述当前心跳间隔。
2.根据权利要求1所述的方法,其特征在于,所述当所述第二时刻、所述第一时刻及所述当前心跳间隔之间的关系满足预设增大关系时,增大所述当前心跳间隔,包括:
计算所述第二时刻与所述第一时刻之间的时间差,并计算所述时间差与所述当前心跳间隔之间的比值;
当所述比值大于第一预设值时,按照第一预设步长增加所述当前心跳间隔。
3.根据权利要求1所述的方法,其特征在于,所述当所述第三时刻、所述第一时刻及所述当前心跳间隔之间的关系满足预设缩短关系时,缩短所述当前心跳间隔,包括:
计算所述第三时刻与所述第一时刻之间的时间差,并计算所述时间差与所述当前心跳间隔之间的比值;
当所述比值小于第二预设值时,按照第二预设步长缩短所述当前心跳间隔,得到更新后的心跳间隔;
当所述比值不小于所述第二预设值时,或者,在所述得到更新后的心跳间隔后,将所述第一时刻更新为所述第三时刻,并返回执行所述在所述第一时刻之后,且再次接收到所述第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时,将接收所述第二类心跳确认包的时刻记为第二时刻的步骤。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
若当前网络环境为无线保真网络,获取所述无线保真网络对应的目标心跳间隔,其中,所述第二时刻与所述第一时刻间的时间差,与所述目标心跳间隔之间的比值小于或等于第一预设值;或者,所述第三时刻与所述第一时刻的时间差,与所述目标心跳间隔之间的比值大于或等于第二预设值;
保存所述目标心跳间隔,以及所述无线保真网络的服务集标识SSID。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当检测到客户端断开之后再次连接到目标SSID对应的无线保真网络时,将所述目标SSID对应的目标心跳间隔设置为所述目标SSID的当前心跳间隔。
6.一种客户端的心跳间隔调整装置,其特征在于,包括:
发送单元,用于按照当前网络环境对应的当前心跳间隔发送心跳包;
第一记录单元,用于当接收到服务器返回的包含端口映射关系过期信息的第一类心跳确认包时,记录接收到所述第一类心跳确认包的时刻为第一时刻;
第二记录单元,用于在所述第一时刻之后,且再次接收到所述第一类心跳确认包之前,当接收到包含端口映射关系未过期信息的第二类心跳确认包时,将接收所述第二类心跳确认包的时刻记为第二时刻;
第一心跳间隔调整单元,用于当所述第二时刻,所述第一时刻及所述当前心跳间隔之间的关系满足预设增大关系时,增大所述当前心跳间隔;
第三记录单元,用于在所述第一时刻之后,当再次接收到所述第一类心跳确认包时,将接收所述第一类心跳确认包的时刻记为第三时刻;
第二心跳间隔调整单元,用于当所述第三时刻、所述第一时刻及所述当前心跳间隔之间的关系满足预设缩短关系时,缩短所述当前心跳间隔。
7.根据权利要求6所述的装置,其特征在于,所述第一心跳间隔调整单元,包括:
第一计算子单元,用于计算所述第二时刻与所述第一时刻之间的时间差,并计算所述时间差与所述当前心跳间隔之间的比值;
第一心跳间隔调整子单元,用于当所述比值大于第一预设值时,按照第一预设步长增加所述当前心跳间隔。
8.根据权利要求6所述的装置,其特征在于,所述第二心跳间隔调整子单元,包括:
第二计算子单元,用于计算所述第三时刻与所述第一时刻之间的时间差,并计算所述时间差与所述当前心跳间隔之间的比值;
第二心跳间隔调整子单元,用于当所述比值小于第二预设值时,按照第二预设步长缩短所述当前心跳间隔;
更新子单元,用于在得到更新后的心跳间隔之后,或者,确定所述比值不小于所述第二预设值后,将所述第一时刻更新为所述第三时刻,并触发所述第二记录单元记录所述第二时刻。
9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括:
获取单元,用于若当前网络环境为无线保真网络,获取所述无线保真网络对应的目标心跳间隔,其中,所述第二时刻与所述第一时刻间的时间差,与所述目标心跳间隔之间的比值小于或等于第一预设值;或者,所述第三时刻与所述第一时刻的时间差,与所述目标心跳间隔之间的比值大于或等于第二预设值;
保存单元,用于保存所述无线保真网络对应的目标心跳间隔,以及所述无线保真网络的服务集标识SSID。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
心跳间隔配置单元,用于当检测到客户端断开之后再次连接到目标SSID对应的无线保真网络时,将所述目标SSID对应的目标心跳间隔设置为所述目标SSID的当前心跳间隔。
11.一种存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时实现权利要求1至5任一项所述客户端的心跳间隔调整方法。
12.一种处理器,所述处理器用于运行程序,其特征在于,所述程序运行时执行权利要求1至5任一项所述的客户端的心跳间隔调整方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711095949.4A CN107612789B (zh) | 2017-11-09 | 2017-11-09 | 一种客户端的心跳间隔调整方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711095949.4A CN107612789B (zh) | 2017-11-09 | 2017-11-09 | 一种客户端的心跳间隔调整方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107612789A CN107612789A (zh) | 2018-01-19 |
CN107612789B true CN107612789B (zh) | 2020-08-28 |
Family
ID=61086226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711095949.4A Active CN107612789B (zh) | 2017-11-09 | 2017-11-09 | 一种客户端的心跳间隔调整方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107612789B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111698132B (zh) * | 2020-06-12 | 2022-03-01 | 北京字节跳动网络技术有限公司 | 用于控制集群中心跳事件的方法、装置、设备和介质 |
CN112073257B (zh) * | 2020-07-31 | 2022-05-03 | 青岛海尔科技有限公司 | 用于控制设备上传数据的方法及装置、设备 |
CN113612624B (zh) * | 2021-06-29 | 2023-01-06 | 济南浪潮数据技术有限公司 | 一种节点之间心跳处理方法及装置 |
CN113993144A (zh) * | 2021-10-27 | 2022-01-28 | 营口天成消防设备有限公司 | 一种基于tc无线组网通讯产品的心跳方法 |
CN115334141B (zh) * | 2022-08-03 | 2024-08-30 | 上海艺赛旗软件股份有限公司 | 一种基于心跳机制的双向数据传输系统、方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933427A (zh) * | 2005-09-12 | 2007-03-21 | 上海新纳广告传媒有限公司 | 基于udp协议的网络心跳监控系统及其方法 |
CN101064625A (zh) * | 2006-04-27 | 2007-10-31 | 中兴通讯股份有限公司 | 一种穿越网络地址翻译网关对用户侧设备进行管理的方法 |
WO2011144134A1 (zh) * | 2010-07-06 | 2011-11-24 | 华为技术有限公司 | 一种信息推送方法、装置和系统 |
CN102523178A (zh) * | 2011-12-20 | 2012-06-27 | 华为技术有限公司 | 一种基于推送的心跳消息发送方法和终端 |
CN103139303A (zh) * | 2013-02-07 | 2013-06-05 | 网易(杭州)网络有限公司 | 一种用于保持连接的心跳方法、装置及系统 |
CN103685241A (zh) * | 2013-11-26 | 2014-03-26 | 中国科学院计算技术研究所 | 一种维持tcp长连接的自适应心跳方法及其系统 |
CN104243293A (zh) * | 2014-08-21 | 2014-12-24 | 深圳市合信自动化技术有限公司 | 一种心跳间隔自动调整的方法和网关设备、服务器 |
CN105120495A (zh) * | 2015-09-09 | 2015-12-02 | 北京京东尚科信息技术有限公司 | 一种智能移动终端的消息推送方法及系统 |
CN107276859A (zh) * | 2017-08-21 | 2017-10-20 | 武汉斗鱼网络科技有限公司 | 保持长连接的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI555357B (zh) * | 2014-07-04 | 2016-10-21 | Throughtek Technology Shenzhen Co Ltd | Effectively maintain the NAT channel service method |
-
2017
- 2017-11-09 CN CN201711095949.4A patent/CN107612789B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933427A (zh) * | 2005-09-12 | 2007-03-21 | 上海新纳广告传媒有限公司 | 基于udp协议的网络心跳监控系统及其方法 |
CN101064625A (zh) * | 2006-04-27 | 2007-10-31 | 中兴通讯股份有限公司 | 一种穿越网络地址翻译网关对用户侧设备进行管理的方法 |
WO2011144134A1 (zh) * | 2010-07-06 | 2011-11-24 | 华为技术有限公司 | 一种信息推送方法、装置和系统 |
CN102523178A (zh) * | 2011-12-20 | 2012-06-27 | 华为技术有限公司 | 一种基于推送的心跳消息发送方法和终端 |
CN103139303A (zh) * | 2013-02-07 | 2013-06-05 | 网易(杭州)网络有限公司 | 一种用于保持连接的心跳方法、装置及系统 |
CN103685241A (zh) * | 2013-11-26 | 2014-03-26 | 中国科学院计算技术研究所 | 一种维持tcp长连接的自适应心跳方法及其系统 |
CN104243293A (zh) * | 2014-08-21 | 2014-12-24 | 深圳市合信自动化技术有限公司 | 一种心跳间隔自动调整的方法和网关设备、服务器 |
CN105120495A (zh) * | 2015-09-09 | 2015-12-02 | 北京京东尚科信息技术有限公司 | 一种智能移动终端的消息推送方法及系统 |
CN107276859A (zh) * | 2017-08-21 | 2017-10-20 | 武汉斗鱼网络科技有限公司 | 保持长连接的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107612789A (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107612789B (zh) | 一种客户端的心跳间隔调整方法及装置 | |
US10764610B2 (en) | Media user client, a media user agent and respective methods performed thereby for providing media from a media server to the media user client | |
JP6605132B2 (ja) | ユーザ機器及びメディア・ストリーミング・ネットワーク支援ノード | |
WO2017215614A1 (zh) | 心跳保活的实现方法、装置及系统 | |
US8971820B2 (en) | Power consumption reduction in a user terminal | |
US9392081B2 (en) | Method and device for sending requests | |
US20080126492A1 (en) | Pinging for the Presence of a Server in a Peer to Peer Monitoring System | |
US20090252072A1 (en) | Method and Apparatus for Maintaining Long-Lived Connections Between a Mobile Client and a Server | |
US10402280B2 (en) | File transfer system and method, policy server, terminal and storage medium | |
CN102685203A (zh) | 数据资源传输的方法和设备 | |
CN108173709B (zh) | 保活长连接方法、装置、终端设备及存储介质 | |
US20170202004A1 (en) | Guaranteed download time | |
KR101473660B1 (ko) | 웹 기반 실시간 데이터 푸싱 방법 및 그 시스템 | |
WO2018196504A1 (zh) | 物联网数据传输方法、物联网终端及计算机可读存储介质 | |
RU2011152006A (ru) | Управление транзакциями | |
US9491268B2 (en) | Method and devices for session timeout management | |
KR101325351B1 (ko) | 비동기적 멀티-소스 스트리밍 | |
WO2017005118A1 (zh) | 维持通信连接的方法、装置、终端及服务器 | |
JP5839999B2 (ja) | 通信端末装置 | |
CN110661836B (zh) | 消息路由方法、装置及系统、存储介质 | |
CN104509155B (zh) | 传输业务的方法和装置 | |
US9232468B2 (en) | Delivering a plurality of simultaneous sessions to a client via a radio access network | |
CN114257662A (zh) | 指示传输协议的方法、装置、电子设备及存储介质 | |
WO2011009362A1 (zh) | 下载数据的方法、装置和系统及节点 | |
JP6251210B2 (ja) | 端末装置、通信セッション確立方法、及び、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |