维持心跳连接的方法、装置和终端设备与流程

文档序号:11389210阅读:872来源:国知局
维持心跳连接的方法、装置和终端设备与流程

本发明涉及通信技术领域,特别是涉及到一种维持心跳连接的方法、装置和终端设备。



背景技术:

在移动通信网络中,当一个tcp/ip链路有一段时间没有数据通信时,网络侧就会释放连接,造成链路中断。为了保证服务器能够实时向终端设备推送信息,终端设备需要以一定的心跳周期定时向服务器发送心跳包来维持长连接。

随着卫星移动通信技术的迅速发展,越来越多的终端设备支持卫星移动通信。卫星移动通信网络也支持tcp/ip链路接入互联网的功能,因此终端设备可以通过卫星移动通信网络进行联网通信。但现有的卫星移动通信网络并没有确定的心跳周期,如果终端设备发送心跳包的周期太大,则无法维持长连接,如果频繁发送心跳包,又会增加功耗。因此,如何为没有确定的心跳周期的通信网络确定一个连接功耗低且能够维持长连接的合适心跳周期,是当前亟需解决的技术问题。



技术实现要素:

本发明的主要目的为提供一种维持长连接的方法,旨在为没有确定的心跳周期的通信网络确定一个连接功耗低且能够维持长连接的合适心跳周期。

为达以上目的,本发明实施例提出一种维持长连接的方法,所述方法包括以下步骤:

接入第二网络后,以第一心跳周期进行长连接测试;

当所述第一心跳周期能够维持长连接时,在所述第一心跳周期的基础上增加时长进行长连接测试,获取能够维持长连接的第二心跳周期;

当所述第一心跳周期不能维持长连接时,在所述第一心跳周期的基础上减少时长进行长连接测试,获取能够维持长连接的第二心跳周期;

以所述第二心跳周期维持长连接。

可选地,所述在所述第一心跳周期的基础上增加时长进行长连接测试,获取能够维持长连接的第二心跳周期的步骤包括:

在所述第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接为止;

当不能维持长连接时,选取前一次测试的心跳周期作为第二心跳周期。

可选地,所述在所述第一心跳周期的基础上增加时长进行长连接测试,获取能够维持长连接的第二心跳周期的步骤包括:

在所述第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接的第k次为止;

当不能维持长连接时,判断第k-1次测试的心跳周期是否大于或等于第一阈值;

如果第k-1次测试的心跳周期大于或等于第一阈值,则选取所述第一阈值作为第二心跳周期;

如果第k-1次测试的心跳周期小于第一阈值,则取以第k次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+1次测试的心跳周期进行长连接测试;当不能维持长连接时,继续取以第k+1次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;当能够维持长连接时,继续取以第k+1次测试的心跳周期和第k次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止;

当数列的中值与边界值的差值的绝对值小于第三阈值时,选取所述数列中小于中值的边界值作为第二心跳周期。

可选地,所述第一阈值为25-35分钟。

可选地,所述第三阈值为0.5-1.5分钟。

可选地,每次增加时长后的心跳周期是前一次测试的心跳周期的两倍。

可选地,所述在所述第一心跳周期的基础上减少时长进行长连接测试,获取能够维持长连接的第二心跳周期的步骤包括:

在所述第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接为止;

当能够维持长连接时,选取本次测试的心跳周期作为第二心跳周期。

可选地,所述在所述第一心跳周期的基础上减少时长进行长连接测试,获取能够维持长连接的第二心跳周期的步骤包括:

在所述第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接的第k次为止;

当能够维持长连接时,判断第k-1次测试的心跳周期与第k次测试的心跳周期的差值是否小于或等于第二阈值;

如果所述差值小于或等于第二阈值,则选取第k次测试的心跳周期作为第二心跳周期;

如果所述差值大于第二阈值,则取以第k次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+1次测试的心跳周期进行长连接测试;当不能维持长连接时,继续取以第k+1次测试的心跳周期和第k次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;当能够维持长连接时,继续取以第k+1次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止;

当数列的中值与边界值的差值的绝对值小于第三阈值时,选取所述数列中小于中值的边界值作为第二心跳周期。

可选地,所述第二阈值为0.5-1.5分钟。

可选地,每次减少时长后的心跳周期是前一次测试的心跳周期的一半。

可选地,所述第一心跳周期为第一网络的心跳周期。

可选地,所述第一网络为公用陆地移动通信网络,所述第二网络为卫星移动通信网络。

本发明实施例同时提出一种维持长连接的装置,所述装置包括:

第一测试模块,用于在接入第二网络后,以第一心跳周期进行长连接测试;

第二测试模块,用于当所述第一心跳周期能够维持长连接时,在所述第一心跳周期的基础上增加时长进行长连接测试,获取能够维持长连接的第二心跳周期;

第三测试模块,用于当所述第一心跳周期不能维持长连接时,在所述第一心跳周期的基础上减少时长进行长连接测试,获取能够维持长连接的第二心跳周期;

连接维持模块,用于以所述第二心跳周期维持长连接。

可选地,所述第二测试模块包括:

时长增加测试单元,用于在所述第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接为止;

第一选取单元,用于当不能维持长连接时,选取前一次测试的心跳周期作为第二心跳周期。

可选地,所述第二测试模块包括:

时长增加测试单元,用于在所述第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接的第k次为止;

第一判断单元,用于当不能维持长连接时,判断第k-1次测试的心跳周期是否大于或等于第一阈值;

第二选取单元,用于如果第k-1次测试的心跳周期大于或等于第一阈值,则选取所述第一阈值作为第二心跳周期;

第一中值测试单元,用于如果第k-1次测试的心跳周期小于第一阈值,则取以第k次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+1次测试的心跳周期进行长连接测试;当不能维持长连接时,继续取以第k+1次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;当能够维持长连接时,继续取以第k+1次测试的心跳周期和第k次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止;

第三选取单元,用于当数列的中值与边界值的差值的绝对值小于第三阈值时,选取所述数列中小于中值的边界值作为第二心跳周期。

可选地,所述时长增加测试单元每次增加时长后的心跳周期是前一次测试的心跳周期的两倍。

可选地,所述第三测试模块包括:

时长减少测试单元,用于在所述第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接为止;

第四选取单元,用于当能够维持长连接时,选取本次测试的心跳周期作为第二心跳周期。

可选地,所述第三测试模块包括:

时长减少测试单元,用于在所述第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接的第k次为止;

第二判断单元,用于当能够维持长连接时,判断第k-1次测试的心跳周期与第k次测试的心跳周期的差值是否小于或等于第二阈值;

第五选取单元,用于如果所述差值小于或等于第二阈值,则选取第k次测试的心跳周期作为第二心跳周期;

第二中值测试单元,用于如果所述差值大于第二阈值,则取以第k次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+1次测试的心跳周期进行长连接测试;当不能维持长连接时,继续取以第k+1次测试的心跳周期和第k次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;当能够维持长连接时,继续取以第k+1次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止;

第六选取单元,用于当数列的中值与边界值的差值的绝对值小于第三阈值时,选取所述数列中小于中值的边界值作为第二心跳周期。

可选地,所述时长减少测试单元每次减少时长后的心跳周期是前一次测试的心跳周期的一半。

本发明实施例还提出一种终端设备,所述终端设备包括存储器、处理器和至少一个被存储在所述存储器中并被配置为由所述处理器执行的应用程序,其特征在于,所述应用程序被配置为用于执行前述维持长连接的方法。

本发明实施例所提供的一种维持长连接的方法,当接入没有确定的心跳周期的第二网络时,以第一心跳周期为参考周期,在第一心跳周期的基础上增加或减少时长进行长连接测试,获取适合第二网络的心跳周期。一方面维持了终端设备与服务器的长连接,确保终端设备一直在线,使得服务器能够通过第二网络实时向终端设备推送信息;另一方面使得终端设备能够以合适的心跳周期向服务器定时发送心跳包,无需频繁发送心跳包,降低了长连接的功耗。从而为没有确定的心跳周期的通信网络确定了一个连接功耗低且能够维持长连接的合适心跳周期。

附图说明

图1是本发明维持长连接的方法一实施例的流程图;

图2是本发明维持长连接的装置一实施例的模块示意图;

图3是图2中的第二测试模块的模块示意图;

图4是图2中的第二测试模块的另一模块示意图;

图5是图2中的第三测试模块的模块示意图;

图6是图2中的第三测试模块的模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;pcs(personalcommunicationsservice,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;pda(personaldigitalassistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或gps(globalpositioningsystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是pda、mid(mobileinternetdevice,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。

本技术领域技术人员可以理解,这里所使用的服务器,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云。在此,云由基于云计算(cloudcomputing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。本发明的实施例中,服务器、终端设备与wns服务器之间可通过任何通信方式实现通信,包括但不限于,基于3gpp、lte、wimax的移动通信、基于tcp/ip、udp协议的计算机网络通信以及基于蓝牙、红外传输标准的近距无线传输方式。

参照图1,提出本发明维持长连接的方法一实施例,所述方法包括以下步骤:

s11、接入第二网络后,以第一心跳周期进行长连接测试。

s12、当第一心跳周期能够维持长连接时,在第一心跳周期的基础上增加时长进行长连接测试,获取能够维持长连接的第二心跳周期。

s13、当第一心跳周期不能维持长连接时,在第一心跳周期的基础上减少时长进行长连接测试,获取能够维持长连接的第二心跳周期。

s14、以第二心跳周期维持长连接。

本发明实施例所述的心跳周期,是指终端设备定时向服务器发送心跳包(空闲数据包)的周期。

本发明实施例中,第一心跳周期为参考心跳周期,可以是终端设备随机确定的心跳周期,也可以是已知的第一网络的心跳周期,即终端设备接入第一网络后能够与服务器维持长连接的心跳周期。

本发明实施例中,第二网络是待确定合适的心跳周期的网络,本发明实施例可以以已知的第一网络的心跳周期为参考,对第二网络进行长连接测试获取第二网络的合适心跳周期。例如,第一网络为公用陆地移动通信网络,第二网络为卫星移动通信网络,以公用陆地移动通信网络的心跳周期为参考,对卫星移动通信网络进行长连接测试,获取卫星移动通信网络的合适心跳周期。

步骤s11中,当接入第二网络后,终端设备则以第一心跳周期进行长连接测试,判断第一心跳周期是否能够维持长连接。具体的,终端设备以第一心跳周期定时向服务器发送心跳包m,服务器接收到心跳包m后,经过第一心跳周期的时延,向终端设备推送标记数据包n。如果终端设备能够接收到标记数据包n,则说明第一心跳周期能够维持终端设备与服务器的长连接;如果终端设备不能接收到标记数据包n,则说明第一心跳周期不能维持终端设备与服务器的长连接。

本领域技术人员可以理解,除了通过判断终端设备是否能接收到服务器推送的标记数据包n的方式来判断是否能够维持长连接外,还可以采用现有技术中的其它方式来判断二者是否能够维持长连接,本发明对此不作限定。

步骤s12中,当第一心跳周期能够维持长连接时,说明第二网络能够达到的最大心跳周期要大于第一心跳周期,因此终端设备在第一心跳周期的基础上增加时长进行长连接测试,获取比第一心跳周期大且能够维持长连接的第二心跳周期。

本发明实施例中,终端设备具体可以通过以下方式进行长连接测试获取第二心跳周期:

终端设备在第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接为止。当不能维持长连接时,比较前一次测试的心跳周期与第一阈值的大小,判断前一次测试的心跳周期是否大于或等于第一阈值。如果前一次测试的心跳周期大于或等于第一阈值,则选取第一阈值作为第二心跳周期。如果前一次测试的心跳周期小于第一阈值,则取以本次测试的心跳周期和前一次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试。当不能维持长连接时,继续取以本次测试的心跳周期和相邻且小于本次测试的心跳周期的往次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试;当能够维持长连接时,继续取以本次测试的心跳周期和相邻且大于本次测试的心跳周期的往次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止。当数列的中值与边界值的差值的绝对值小于第三阈值时,选取数列中小于中值的边界值作为第二心跳周期。

例如:终端设备在第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接的第k次为止。当不能维持长连接时,判断第k-1次测试的心跳周期是否大于或等于第一阈值。如果第k-1次测试的心跳周期大于或等于第一阈值,则选取第一阈值作为第二心跳周期。如果第k-1次测试的心跳周期小于第一阈值,则取以第k次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+1次测试的心跳周期进行长连接测试;当不能维持长连接时,继续取以第k+1次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;当能够维持长连接时,继续取以第k+1次测试的心跳周期和第k次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止;当数列的中值与边界值的差值的绝对值小于第三阈值时,选取数列中小于中值的边界值作为第二心跳周期。其中,k≥2。

第一阈值和第三阈值可以根据实际需要设定,如可以将第一阈值设定在25-35分钟的范围内,将第三阈值设定在0.5-1.5分钟的范围内。

终端设备在第一心跳周期的基础上逐次增加时长时,每次增加的时长可以相等,如每次增加5分钟;也可以不相等,如逐次减小,逐次增大,逐次减小或增大到特定值后保持不变,等等。例如,第一次增加10分钟,第二次增加8分钟,第三次增加5分钟,第四次增加3分钟,……。

作为优选,本发明实施例中,终端设备成倍增加心跳周期,即每次增加时长后的心跳周期是前一次测试的心跳周期的两倍。

举例而言:

假设第一心跳周期为t1,首先增加心跳周期至2t1,利用2t1进行长连接测试。当能够维持长连接时,继续增加心跳周期至22t1进行长连接测试。直到心跳周期增加到2kt1时,不能维持长连接为止,其中k为正整数。

当不能维持长连接时,说明需要的第二网络的第二心跳周期t2介于本次测试的心跳周期2kt1和前一次测试的心跳周期2k-1t1之间,即2k-1t1<t2<2kt1。此时比较前一次测试的心跳周期2k-1t1与第一阈值的大小,假设第一阈值为30分钟,则判断前一次测试的心跳周期2k-1t1是否大于或等于30分钟。当2k-1t1≥30分钟时,考虑到无线网络的不确定性和终端设备的位置移动等因素,第二心跳周期不宜过大,因此直接将第一阈值作为第二心跳周期,即确定第二心跳周期t2=30分钟。

当2k-1t1<30分钟时,则采取二分法逼近第二心跳周期,以尽量获取较大的第二心跳周期,降低长连接的功耗,具体为:

取以本次测试的心跳周期2kt1和前一次测试的心跳周期2k-1t1为边界值的数列(2k-1t1,2kt1)的中值t1作为心跳周期进行长连接测试。

当不能维持长连接时,则以中值t1为边界值,继续向上述数列(2k-1t1,2kt1)的左侧取新的中值t2,也就是说,取以本次测试的心跳周期t1和相邻且小于本次测试的心跳周期的往次测试的心跳周期2k-1t1为边界值的数列(2k-1t1,t1)的中值t2作为心跳周期进行长连接测试;当能够维持长连接时,则以中值t1为边界值,继续向上述数列(2k-1t1,2kt1)的右侧取新的中值t2,也就是说,取以本次测试的心跳周期t1和相邻且大于本次测试的心跳周期的往次测试的心跳周期2kt1为边界值的数列(t1,2kt1)的中值t2作为心跳周期进行长连接测试。如此重复前述步骤,反复取中值,直到当前的数列的中值与边界值的差值的绝对值小于第三阈值为止。

考虑到卫星移动通信网络传输时延以及服务器和终端设备的处理时延,当数列的中值与边界值的差值的绝对值小于第三阈值时,则选取数列中小于中值的边界值作为第二心跳周期,从而可以提高连接的稳定性。例如,取数列(t5,t4)的中值t6,判断t6-t5或t4-t5是否大于或等于1分钟(第三阈值),若是,则停止测试,并选取t5为第二心跳周期,即确定t2=t5。

在其它实施例中,终端设备也可以通过以下方式进行长连接测试获取第二心跳周期:终端设备在第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接为止;当不能维持长连接时,考虑到前一次测试的心跳周期在测试时能够维持长连接,则直接选取前一次测试的心跳周期作为第二心跳周期,以快速获取第二心跳周期。

除了逐次增加时长进行长连接测试外,终端设备还可以采用其它方式,例如:终端设备先在第一心跳周期的基础上一次性增加第一时长进行长连接测试,判断是否能够维持长连接。当能够维持长连接时,直接将本次测试的心跳周期作为第二心跳周期。当不能维持长连接时,在本次测试的心跳周期的基础上逐次减少第二时长(第二时长小于第一时长,每次减少的第二时长可以相等或不等)进行长连接测试,直到能够维持长连接为止;当能够维持长连接时,将本次测试的心跳周期作为第二心跳周期。

本领域技术人员可以理解,除此之外,还可以采用其它方式增加时长进行长连接测试,只要最终的第二心跳周期大于第一心跳周期,且能够维持长连接即可,本发明对此不再一一列举赘述。

步骤s13中,当第一心跳周期不能维持长连接时,说明第二网络能够达到的最大心跳周期要小于第一心跳周期,因此终端设备在第一心跳周期的基础上减少时长进行长连接测试,获取能够维持长连接的第二心跳周期。

本发明实施例中,终端设备具体可以通过以下方式进行长连接测试获取第二心跳周期:

终端设备在第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接为止;当能够维持长连接时,对前一次测试的心跳周期与本次测试的心跳周期进行差值运算,判断前一次测试的心跳周期与本次测试的心跳周期的差值是否小于或等于第二阈值。如果差值小于或等于第二阈值,则选取本次测试的心跳周期作为第二心跳周期。如果差值大于第二阈值,则取以本次测试的心跳周期和前一次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试。当不能维持长连接时,继续取以本次测试的心跳周期和相邻且小于本次测试的心跳周期的往次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试;当能够维持长连接时,继续取以本次测试的心跳周期和相邻且大于本次测试的心跳周期的往次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止。当数列的中值与边界值的差值的绝对值小于第三阈值时,选取数列中小于中值的边界值作为第二心跳周期。

例如:终端设备在第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接的第k次为止。当能够维持长连接时,判断第k-1次测试的心跳周期与第k次测试的心跳周期的差值是否小于或等于第二阈值。如果差值小于或等于第二阈值,则选取第k次测试的心跳周期作为第二心跳周期。如果差值大于第二阈值,则取以第k次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+1次测试的心跳周期进行长连接测试;当不能维持长连接时,继续取以第k+1次测试的心跳周期和第k次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;当能够维持长连接时,继续取以第k+1次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止;当数列的中值与边界值的差值的绝对值小于第三阈值时,选取数列中小于中值的边界值作为第二心跳周期。

第二阈值可以根据实际需要设定,如可以将第二阈值设定在0.5-1.5分钟的范围内。

终端设备在第一心跳周期的基础上逐次减少时长时,每次减少的时长可以相等,如每次减少5分钟;也可以不相等,如逐次减小,逐次增大,逐次减小或增大到特定值后保持不变,等等。例如,第一次减少10分钟,第二次减少8分钟,第三次减少5分钟,第四次减少3分钟,……。

作为优选,本发明实施例中,终端设备每次减少时长后的心跳周期是前一次测试的心跳周期的一半。

举例而言:

假设第一心跳周期为t1,首先减少心跳周期至t1/2,利用t1/2进行长连接测试。当不能维持长连接时,继续减少心跳周期至t1/22进行长连接测试。直到心跳周期减少到t1/2k时,能够维持长连接为止,其中k为正整数。

当能够维持长连接时,说明需要的第二网络的第二心跳周期t2介于本次测试的心跳周期t1/2k和前一次测试的心跳周期t1/2k-1之间,即t1/2k<t2<t1/2k-1。此时对前一次测试的心跳周期2k-1t1与本次测试的心跳周期t1/2k进行差值运算,比较二者的差值与第二阈值的大小,判断差值是否小于或等于第二阈值,假设第二阈值为1分钟,则判断t1/2k-1-t1/2k的差值是否小于或等于1分钟。当t1/2k-1-t1/2k≤1分钟时,考虑到卫星移动通信网络传输时延以及服务器和终端设备的处理时延,则直接选取本次测试的心跳周期t1/2k作为第二心跳周期,即确定第二心跳周期t2=t1/2k

当t1/2k-1-t1/2k>1分钟时,则采取二分法逼近第二心跳周期,以尽量获取较大的第二心跳周期,降低长连接的功耗,具体为:

取以本次测试的心跳周期t1/2k和前一次测试的心跳周期t1/2k-1为边界值的数列(t1/2k,t1/2k-1)的中值t1作为心跳周期进行长连接测试。

当不能维持长连接时,则以中值t1为边界值,继续向上述数列(t1/2k,t1/2k-1)的左侧取新的中值t2,也就是说,取以本次测试的心跳周期t1和相邻且小于本次测试的心跳周期的往次测试的心跳周期t1/2k为边界值的数列(t1/2k,t1)的中值t2作为心跳周期进行长连接测试;当能够维持长连接时,则以中值t1为边界值,继续向上述数列(t1/2k,t1/2k-1)的右侧取新的中值t2,也就是说,取以本次测试的心跳周期t1和相邻且大于本次测试的心跳周期的往次测试的心跳周期t1/2k-1为边界值的数列(t1,t1/2k-1)的中值t2作为心跳周期进行长连接测试。如此重复前述步骤,反复取中值,直到当前的数列的中值与边界值的差值的绝对值小于第三阈值为止。

考虑到卫星移动通信网络传输时延以及服务器和终端设备的处理时延,为了保证连接的稳定性,当数列的中值与边界值的差值的绝对值小于第三阈值时,则选取数列中小于中值的边界值作为第二心跳周期。例如,取数列(t5,t4)的中值t6,判断t6-t5或t4-t5是否大于或等于1分钟(第三阈值),若是,则停止测试,并选取t5为第二心跳周期,即确定t2=t5。

在其它实施例中,终端设备也可以通过以下方式进行长连接测试获取第二心跳周期:终端设备在第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接为止;当能够维持长连接时,直接选取本次测试的心跳周期作为第二心跳周期,以快速获取第二心跳周期。

本领域技术人员可以理解,除此之外,还可以采用其它方式减少时长进行长连接测试,只要最终的第二心跳周期能够维持长连接即可,本发明对此不再一一列举赘述。

步骤s14中,当获取第二心跳周期后,终端设备则以第二心跳周期定时向服务器发送心跳包,维持与服务器长连接,从而服务器可以通过第二网络实时向终端设备推送信息。

本发明实施例维持长连接的方法,当接入第二网络如卫星移动终端通信网络时,以第一心跳周期为参考周期,在第一心跳周期的基础上增加或减少时长进行长连接测试,获取适合卫星移动终端通信网络的心跳周期。一方面维持了终端设备与服务器的长连接,确保终端设备一直在线,使得服务器能够通过卫星移动终端通信网络实时向终端设备推送信息;另一方面使得终端设备能够以合适的心跳周期向服务器定时发送心跳包,无需频繁发送心跳包,降低了长连接的功耗。从而为没有确定的心跳周期的通信网络确定了一个连接功耗低且能够维持长连接的合适心跳周期。

参照图2,提出本发明维持长连接的装置一实施例,该装置应用于终端设备,该装置包括第一测试模块10、第二测试模块20、第三测试模块30和连接维持模块40,其中:

第一测试模块10:用于在接入第二网络后,以第一心跳周期进行长连接测试。

当接入第二网络后,第一测试模块10则以第一心跳周期进行长连接测试,判断第一心跳周期是否能够维持长连接。具体的,第一测试模块10以第一心跳周期定时向服务器发送心跳包m,服务器接收到心跳包m后,经过第一心跳周期的时延,向终端设备推送标记数据包n。第一测试模块10判断判断能够接收到服务器推送的标记数据包n,如果能够接收到标记数据包n,则说明第一心跳周期能够维持终端设备与服务器的长连接,通知第二测试模块20;如果不能接收到标记数据包n,则说明第一心跳周期不能维持终端设备与服务器的长连接,通知第三测试模块30。

本领域技术人员可以理解,除了通过判断终端设备是否能接收到服务器推送的标记数据包n的方式来判断是否能够维持长连接外,还可以采用现有技术中的其它方式来判断二者是否能够维持长连接,本发明对此不作限定。

后续第二测试模块20和第三测试模块30进行长连接测试以及判断第一心跳周期是否能够维持长连接的方式与第一测试模块10相同。

第二测试模块20:用于当第一心跳周期能够维持长连接时,在第一心跳周期的基础上增加时长进行长连接测试,获取能够维持长连接的第二心跳周期。

当第一心跳周期能够维持长连接时,说明第二网络能够达到的最大心跳周期要大于第一心跳周期,因此第二测试模块20在第一心跳周期的基础上增加时长进行长连接测试,获取比第一心跳周期大且能够维持长连接的第二心跳周期。

可选地,如图3所示,第二测试模块20包括时长增加测试单元21和第一选取单元22,其中:时长增加测试单元21,用于在第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接为止;第一选取单元22,用于当不能维持长连接时,直接选取前一次测试的心跳周期作为第二心跳周期。从而可以快速获取第二心跳周期。

可选地,如图4所示,第二测试模块20包括时长增加测试单元21、第一判断单元23、第二选取单元24、第一中值测试单元25和第三选取单元26,其中:

时长增加测试单元21:用于在第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接为止。

本发明实施例中,时长增加测试单元21在第一心跳周期的基础上逐次增加时长时,每次增加的时长可以相等,如每次增加5分钟;也可以不相等,如逐次减小,逐次增大,逐次减小或增大到特定值后保持不变,等等。例如,第一次增加10分钟,第二次增加8分钟,第三次增加5分钟,第四次增加3分钟,……。

作为优选,本发明实施例中,时长增加测试单元21成倍增加心跳周期,即每次增加时长后的心跳周期是前一次测试的心跳周期的两倍。

第一判断单元23:用于当不能维持长连接时,比较前一次测试的心跳周期与第一阈值的大小,判断前一次测试的心跳周期是否大于或等于第一阈值,并将判断结果发送给第二选取单元24和第一中值测试单元25。

第一阈值可以根据实际需要设定,如可以将第一阈值设定在25-35分钟的范围内。

第二选取单元24:用于如果前一次测试的心跳周期大于或等于第一阈值,则直接选取第一阈值作为第二心跳周期。

第一中值测试单元25:用于如果前一次测试的心跳周期小于第一阈值,则取以本次测试的心跳周期和前一次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试。当不能维持长连接时,继续取以本次测试的心跳周期和相邻且小于本次测试的心跳周期的往次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试;当能够维持长连接时,继续取以本次测试的心跳周期和相邻且大于本次测试的心跳周期的往次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止。当数列的中值与边界值的差值的绝对值小于第三阈值时,停止测试,并通知第三选取单元26。

第一中值测试单元25通过逐次取中值的方式逼近第二心跳周期,以尽量获取较大的第二心跳周期,降低长连接的功耗。第三阈值可以根据实际需要设定,如可以将第三阈值设定在0.5-1.5分钟的范围内。

例如:时长增加测试单元21在第一心跳周期的基础上逐次增加时长进行长连接测试,直到不能维持长连接的第k次为止。当不能维持长连接时,第一判断单元23判断第k-1次测试的心跳周期是否大于或等于第一阈值。如果第k-1次测试的心跳周期大于或等于第一阈值,第二选取单元24则选取第一阈值作为第二心跳周期。如果第k-1次测试的心跳周期小于第一阈值,第一中值测试单元25则取以第k次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+1次测试的心跳周期进行长连接测试;当不能维持长连接时,继续取以第k+1次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;当能够维持长连接时,继续取以第k+1次测试的心跳周期和第k次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止。

第三选取单元26:用于当数列的中值与边界值的差值的绝对值小于第三阈值时,选取数列中小于中值的边界值作为第二心跳周期。

考虑到卫星移动通信网络传输时延以及服务器和终端设备的处理时延,当数列的中值与边界值的差值的绝对值小于第三阈值时,第三选取单元26则选取数列中小于中值的边界值作为第二心跳周期,从而可以提高连接的稳定性。

除了逐次增加时长进行长连接测试外,第二测试模块20还可以采用其它方式,例如:第二测试模块20先在第一心跳周期的基础上一次性增加第一时长进行长连接测试,判断是否能够维持长连接。当能够维持长连接时,直接将本次测试的心跳周期作为第二心跳周期。当不能维持长连接时,在本次测试的心跳周期的基础上逐次减少第二时长(第二时长小于第一时长,每次减少的第二时长可以相等或不等)进行长连接测试,直到能够维持长连接为止;当能够维持长连接时,将本次测试的心跳周期作为第二心跳周期。

本领域技术人员可以理解,除此之外,还可以采用其它方式增加时长进行长连接测试,只要最终的第二心跳周期大于第一心跳周期,且能够维持长连接即可,本发明对此不再一一列举赘述。

第三测试模块30:用于当第一心跳周期不能维持长连接时,在第一心跳周期的基础上减少时长进行长连接测试,获取能够维持长连接的第二心跳周期。

当第一心跳周期不能维持长连接时,说明第二网络能够达到的最大心跳周期要小于第一心跳周期,因此第三测试模块30在第一心跳周期的基础上减少时长进行长连接测试,获取能够维持长连接的第二心跳周期。

可选地,如图5所示,第三测试模块30包括时长减少测试单元31和第四选取单元32,其中:时长减少测试单元31,用于在第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接为止;第四选取单元32,用于当能够维持长连接时,选取本次测试的心跳周期作为第二心跳周期。

可选地,如图6所示,第三测试模块30包括时长减少测试单元31、第二判断单元33、第五选取单元34、第二中值测试单元35和第六选取单元36,其中:

时长减少测试单元31:用于在第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接为止。

本发明实施例中,时长减少测试单元31在第一心跳周期的基础上逐次减少时长时,每次减少的时长可以相等,如每次减少5分钟;也可以不相等,如逐次减小,逐次增大,逐次减小或增大到特定值后保持不变,等等。例如,第一次减少10分钟,第二次减少8分钟,第三次减少5分钟,第四次减少3分钟,……。

作为优选,本发明实施例中,时长减少测试单元31每次减少时长后的心跳周期是前一次测试的心跳周期的一半。

第二判断单元33:用于当能够维持长连接时,对前一次测试的心跳周期与本次测试的心跳周期进行差值运算,判断前一次测试的心跳周期与本次测试的心跳周期的差值是否小于或等于第二阈值,并将判断结果发送给第五选取单元34和第二中值测试单元35。

第二阈值可以根据实际需要设定,如可以将第二阈值设定在0.5-1.5分钟的范围内。

第五选取单元34:用于如果差值小于或等于第二阈值,则选取本次测试的心跳周期作为第二心跳周期。

第二中值测试单元35:用于如果差值大于第二阈值,则取以本次测试的心跳周期和前一次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试。当不能维持长连接时,继续取以本次测试的心跳周期和相邻且小于本次测试的心跳周期的往次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试;当能够维持长连接时,继续取以本次测试的心跳周期和相邻且大于本次测试的心跳周期的往次测试的心跳周期为边界值的数列的中值作为心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止。当数列的中值与边界值的差值的绝对值小于第三阈值时,停止测试,并通知第六选取单元36。

第二中值测试单元35通过逐次取中值的方式逼近第二心跳周期,以尽量获取较大的第二心跳周期,降低长连接的功耗。第三阈值可以根据实际需要设定,如可以将第三阈值设定在0.5-1.5分钟的范围内。

例如:时长减少测试单元31在第一心跳周期的基础上逐次减少时长进行长连接测试,直到能够维持长连接的第k次为止。当能够维持长连接时,第二判断单元33判断第k-1次测试的心跳周期与第k次测试的心跳周期的差值是否小于或等于第二阈值。如果差值小于或等于第二阈值,第五选取单元34则选取第k次测试的心跳周期作为第二心跳周期。如果所述差值大于第二阈值,第二中值测试单元35则取以第k次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+1次测试的心跳周期进行长连接测试;当不能维持长连接时,继续取以第k+1次测试的心跳周期和第k次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;当能够维持长连接时,继续取以第k+1次测试的心跳周期和第k-1次测试的心跳周期为边界值的数列的中值作为第k+2次测试的心跳周期进行长连接测试;如此反复,直到数列的中值与边界值的差值的绝对值小于第三阈值为止。

第六选取单元36:用于当数列的中值与边界值的差值的绝对值小于第三阈值时,选取数列中小于中值的边界值作为第二心跳周期。

考虑到卫星移动通信网络传输时延以及服务器和终端设备的处理时延,为了保证连接的稳定性,当数列的中值与边界值的差值的绝对值小于第三阈值时,第六选取单元36则选取数列中小于中值的边界值作为第二心跳周期。

本领域技术人员可以理解,除此之外,第三测试模块30还可以采用其它方式减少时长进行长连接测试,只要最终的第二心跳周期能够维持长连接即可,本发明对此不再一一列举赘述。

连接维持模块40:用于以第二心跳周期维持长连接。

当获取第二心跳周期后,连接维持模块40则以第二心跳周期定时向服务器发送心跳包,维持与服务器长连接,从而服务器可以通过第二网络实时向终端设备推送信息。

本发明实施例维持长连接的装置,当接入第二网络如卫星移动终端通信网络时,以第一心跳周期为参考周期,在第一心跳周期的基础上增加或减少时长进行长连接测试,获取适合卫星移动终端通信网络的心跳周期。一方面维持了终端设备与服务器的长连接,确保终端设备一直在线,使得服务器能够通过卫星移动终端通信网络实时向终端设备推送信息;另一方面使得终端设备能够以合适的心跳周期向服务器定时发送心跳包,无需频繁发送心跳包,降低了长连接的功耗。从而为没有确定的心跳周期的通信网络确定了一个连接功耗低且能够维持长连接的合适心跳周期。

需要说明的是:上述实施例提供的维持长连接的装置与维持长连接的方法实施例属于同一构思,其具体实现过程详见方法实施例,且方法实施例中的技术特征在装置实施例中均对应适用,这里不再赘述。

本发明同时提出一种终端设备,所述终端设备包括存储器、处理器和至少一个被存储在存储器中并被配置为由处理器执行的应用程序,所述应用程序被配置为用于执行维持长连接的方法。所述维持长连接的方法包括以下步骤:接入第二网络后,以第一心跳周期进行长连接测试;当第一心跳周期能够维持长连接时,在第一心跳周期的基础上增加时长进行长连接测试,获取能够维持长连接的第二心跳周期;当第一心跳周期不能维持长连接时,在第一心跳周期的基础上减少时长进行长连接测试,获取能够维持长连接的第二心跳周期;以第二心跳周期维持长连接。本实施例中所描述的维持心跳连接的方法为本发明中上述实施例所涉及的维持心跳连接的方法,在此不再赘述。

本领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、cd-rom、和磁光盘)、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随机存储器)、eprom(erasableprogrammableread-onlymemory,可擦写可编程只读存储器)、eeprom(electricallyerasableprogrammableread-onlymemory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。

本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。

本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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