CN110474975B - 应用程序的心跳处理方法、装置、电子设备及存储介质 - Google Patents
应用程序的心跳处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110474975B CN110474975B CN201910733575.7A CN201910733575A CN110474975B CN 110474975 B CN110474975 B CN 110474975B CN 201910733575 A CN201910733575 A CN 201910733575A CN 110474975 B CN110474975 B CN 110474975B
- Authority
- CN
- China
- Prior art keywords
- heartbeat cycle
- heartbeat
- application program
- cycle
- current
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
Abstract
本申请提供一种应用程序的心跳处理方法、装置、电子设备及存储介质。该方法包括:若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长;若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期。装置用于执行上述方法,本申请实施例通过当检测到应用程序切换至前台运行状态,并且在后台运行的时长超过第一预设阈值后,判断应用程序的连接状态,根据连接状态动态调整当前心跳周期,由于连接状态不同设置不同的当前心跳周期,一方面能够及时进行连接检测,另一方面能够节省资源消耗。
Description
技术领域
本申请涉及通信技术领域,具体而言,涉及一种应用程序的心跳处理方法、装置、电子设备及存储介质。
背景技术
由于即时通讯(Instant Message,IM)应用程序信息传递的即时性,需要IM应用程序处于长期的运行状态,以保持与服务器的有效连接。
现有技术中,设置有两个固定心跳周期,即当IM应用程序处于后台运行状态时,使用第一心跳周期,当IM应用程序处于前台运行状态时,使用第二心跳周期。每隔一个心跳周期向服务器发送一个数据包(即心跳信令)去探测网络,以达到长连接的效果。
但是,由于网络地址转换(Network Address Translation,NAT)超时、动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)租期、网络状态和手机设备后台断网策略等因素的影响,会导致发送心跳信令过于频繁或过低,无法在资源消耗和连接检测及时性之间做到较好的平衡。
发明内容
本申请实施例的目的在于提供一种应用程序的心跳处理方法、装置、电子设备及存储介质,用以解决现有技术中无法在资源消耗和连接检测及时性之间做到较好的平衡的技术问题。
第一方面,本申请实施例提供一种应用程序的心跳处理方法,包括:
若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长;
若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期。
本申请实施例通过当检测到应用程序切换至前台运行状态,并且在后台运行的时长超过第一预设阈值后,判断应用程序的连接状态,根据连接状态动态调整当前心跳周期,由于连接状态不同设置不同的当前心跳周期,一方面能够及时进行连接检测,另一方面能够节省资源消耗。
进一步地,所述连接状态为已连接,所述根据所述连接状态调整当前心跳周期,包括:将所述当前心跳周期从第一心跳周期调整为第二心跳周期,其中,所述第二心跳周期小于所述第一心跳周期。
本申请实施例中,由于应用程序处于后台时长大于第一预设阈值,虽然应用程序处于连接状态,但是其网络状态可能会发生变化,因此通过加快心跳信令的发送,能够更快的进行网络探测。
进一步地,在将所述第一心跳周期调整为第二心跳周期之后,所述方法还包括:在根据所述第二心跳周期向服务器发送预设次数的心跳信令,并探测成功之后,将所述当前心跳周期从所述第二心跳周期调整为所述第一心跳周期。
本申请实施例中,在向服务器发送了预设次数的心跳信令后,恢复至原来的心跳周期,从而在保证网络正常的情况下,降低资源的消耗。
进一步地,所述连接状态为未连接,所述根据所述连接状态调整当前心跳周期,包括:根据预设周期进行与服务器的重连操作,直至连接成功为止;其中,一次所述重连操作是指同时向服务器发起预设个数的传输控制协议TCP连接;获取连接成功的重连操作中的最短耗时;接收所述服务器发送的用户连接平均耗时,并根据所述用户连接平均耗时、所述最短耗时和所述当前心跳周期获得动态心跳周期;将所述当前心跳周期的第一心跳周期调整为所述动态心跳周期。
本申请实施例中,若应用程序处于未连接状态,则加快重连操作,从而保证尽快连接到应用程序的服务器,并且在连接成功后,根据重连操作获得的参数计算动态心跳周期,从而能够在网络状态不太好时,减少心跳周期,在网络状态较好时,增大心跳周期,做到了资源消耗和连接检测及时性的平衡。
进一步地,所述根据所述用户连接平均耗时、所述最短耗时和所述当前心跳周期获得动态心跳周期,包括:根据Td=M/To*T计算获得所述动态心跳周期;其中,Td为所述动态心跳周期,M为所述用户连接平均耗时,To为所述最短耗时,T为所述当前心跳周期。
本申请实施例通过上述公式计算获得动态心跳周期能够保证在及时探测网络的同时,降低资源的消耗。
进一步地,所述获取连接成功的重连操作中的最短耗时,包括:统计每个TCP连接中三次握手所需的耗时,并对所有的耗时进行排序,根据排序结果获得最短耗时。
本申请实施例中,TCP连接中的最短耗时用来表示网络当前状态的一个因素,因此,根据最短耗时计算动态心跳周期,能够在及时探测网络的同时,降低资源的消耗。
进一步地,所述第一预设阈值通过以下方式获得:获取所述应用程序对应的终端的目标终端标识,根据所述目标终端标识从预先构建的策略表中获得所述第一预设阈值;其中所述策略表包括多个终端标识以及每一终端标识对应的预设阈值。
由于不同的终端厂商后台网络管理策略不同,因此本申请实施例通过维护一个策略表,从策略表中获取对应终端的第一预设阈值,能够更加准确的确定是否需要动态调整当前心跳周期。
第二方面,本申请实施例提供一种应用程序的心跳处理装置,包括:
时长获取模块,用于若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长;
心跳调整模块,用于若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期。
第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法步骤。
第四方面,本申请实施例提供一种非暂态计算机可读存储介质,包括:
所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法步骤。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种应用程序的心跳处理方法流程示意图;
图2为本申请实施例提供的另一种心跳处理方法流程示意图;
图3为本申请实施例提供的重连操作后心跳周期调整方法流程示意图;
图4为本申请实施例提供的一种心跳处理装置结构示意图;
图5为本申请实施例提供的电子设备实体结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
IM应用程序的特点就是“及时”,几乎所有的IM应用程序都通过TCP长连接结合心跳机制实现及时性。通过使用TCP长连接是因为TCP在连通状态下可以保证消息收发完整、及时、可靠,使用心跳的原因是为了检测TCP链路的可用性。在实际应用中,存在以下几种因素会影响TCP长连接存活,例如:
1、NAT超时;大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰NAT表中该链路的对应项,造成链路中断。长连接心跳间隔必须要小于NAT超时时间(aging-time),如果超过aging-time不做心跳,TCP长连接链路就会中断,服务器就无法发送Push给手机,只能等到客户端下次心跳失败后,重建连接才能取到消息。
2、DHCP租期过期;DHCP租期到了需要主动续约,否则会继续使用过期IP导致长连接偶然的断连。
3、网络状态的变化;比如WIFI网络转移动网络、或者WIFI网络转另一WIFI网络等,会造成网络中断。
由于移动设备的能源储备有限,流量收费,因此心跳检测还需要考虑这些方面的因素,本申请实施例的提出能够在资源消耗和连接检测的及时性之间做到较好的平衡。
图1为本申请实施例提供的一种应用程序的心跳处理方法流程示意图,如图1所示,该方法应用于处理装置,该处理装置可以为终端,例如:移动电话、移动电脑、平板电脑、个数数字助理(Personal Digital Assistant,PDA)、媒体播放器、智能电视、智能穿戴设备等。该方法如下:
步骤101:若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长。
在具体的实施过程中,终端可以实时监测应用程序的运行状态,应用程序的运行状态可以包括前台运行状态和后台运行状态。前台运行状态是指应用程序的界面显示在终端的主界面上,后台运行状态是指应用程序的界面退出终端的主界面运行。终端监测应用程序的运行状态的方法可以是,通过创建的监控线程来监测,或者由应用程序监测自身的运行状态,当运行状态发生变更时,发送系统广播通知终端其自身的运行状态。当然也可以采用其他的方法监控应用程序的运行状态,本申请实施例对此不作具体限定。
当终端检测到应用程序从后台运行状态切换为前台运行状态时,可以获取该应用程序在上一次处于前台运行状态到本次处于前台运行状态期间,该应用程序处于后台运行状态的时长。终端在获取应用程序处于后台运行状态的时长时,可以当应用程序从前台运行状态切换为后台运行状态时开始计时,当应用程序再次从后台运行状态切换为前台运行状态时结束计时,从而获得在后台运行的时长。另外,终端还可以记录从前台运行状态切换为后台运行状态时的时间,以及再次从后台运行状态切换为前台运行状态时的时间,然后二者的时间差即为应用程序后台运行的时长。例如:应用程序从2019年3月20日10:00从前台运行状态转为后台运行状态,在2019年3月20日11:00从后台运行状态切换为前台运行状态,此时,终端获取到该应用程序处于后台运行状态的时长为1个小时。
步骤102:若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期。
在具体的实施过程中,由于系统对后台应用联网有限制,不同的只读内存镜像(ROM image,ROM)也进行了特殊的定制,如果应用程序在后台运行的时间超过一定时长则会导致后台数据被断开。因此,在终端获取到应用程序后台运行的时长后,若该时长大于第一预设阈值,则获取该应用程序的连接状态,判断该应用程序当前的连接状态是已连接还是未连接,然后根据当前的连接状态调整当前心跳周期。可以理解的是,第一预设阈值为该终端对应的后台应用联网限制的最大时长,即,如果应用程序在后台运行时长大于第一预设阈值,则说明终端可能与该应用程序的服务器断开连接,应用程序掉线;如果应用程序在后台运行时长小于或等于第一预设阈值,则说明没有达到后台应用联网限制的最大时长,在一般情况下该应用程序的后台数据不会被断开。当前心跳周期是终端在当前时刻向服务器发送心跳信令的周期,即每个一个当前心跳周期向服务器发送一次心跳信令。
其中,由于每个终端厂商的后台网络管理策略不同,因此第一预设阈值可以根据终端的厂商不同而不同,在判断应用程序处于后台运行状态的时长是否大于第一预设阈值之前,需要先获取到第一预设阈值。对于第一预设阈值的确定,可以在终端的数据库中维护一个策略表,在策略表中保存有多个终端标识以及每个终端标识对应的预设阈值。其中,终端标识用于表征终端对应的型号或生产厂商。终端可以跟服务器进行交互,当有新型号的终端或新厂商的终端上市后,可以从服务器中获取对应终端标识以及对应的预设阈值。另外,若服务器统计获得某个终端标识对应的更加准确的预设阈值,终端也可以通过与服务器进行交互对数据库中的预设阈值进行更新。从而,可以通过目标终端标识从数据库中查找对应的第一预设阈值。
本申请实施例通过当检测到应用程序切换至前台运行状态,并且在后台运行的时长超过第一预设阈值后,判断应用程序的连接状态,根据连接状态动态调整当前心跳周期,由于连接状态不同设置不同的当前心跳周期,一方面能够及时进行连接检测,另一方面能够节省资源消耗。
图2为本申请实施例提供的另一种心跳处理方法流程示意图,如图2所示,包括:
步骤201:运行应用程序;当终端连接上应用程序的服务器之后,运行该应用程序;
步骤202:判断是否在后台;终端判断该应用程序的当前运行状态是否为后台运行状态,若否,则返回至步骤201继续运行该应用程序;若是,则执行步骤203;应当说明的是,终端可以实时判断应用程序是否在后台运行,也可以根据预设时间段进行周期性监测;
步骤203:记录在后台停留的时长;终端记录应用程序处于后台运行的时长;
步骤204:是否回到前台;终端判断该应用程序是否从后台切换为前台,若是,则执行步骤205,若否,则返回步骤203继续记录应用程序处于后台运行的时长;应当说明的是,终端可以实时判断应用程序是否切换为前台运行,也可以根据预设时间段进行周期性监测;
步骤205:在后台停留时长是否大于N秒;当应用程序从后台运行切换为前台运行后,判断在后台运行的时长是否大于N秒,若大于,则执行步骤207,若不大于,则执行步骤206;其中,N秒是终端根据终端标识从数据库中获取的;
步骤206:维持当前心跳周期不变;若终端判断得知应用程序在后台运行的时长不大于N秒,则说明后台运行时长没有超过该终端的后台应用联网限制的最长时间,不会导致后台数据断开,因此,可以维持当前心跳周期不变;
步骤207:判断是否连接;若终端判断得知应用程序在后台运行的时长大于N秒,则说明后台运行的时长超过了后台应用联网限制的最长时间,可能会导致后台数据断开,因此需要判断该终端是否与应用程序的服务器仍然保持连接,若已连接,则执行步骤208,否则执行步骤209;
步骤208:缩短心跳周期;在判断终端与应用程序的服务器处于连接状态,为了防止网络发生变化,可以缩短心跳周期,以加快心跳信令的发送;
步骤209:加快重连,并动态调整心跳周期;在判断终端与应用程序的服务器处于未连接状态,则说明该应用程序掉线,为了尽快连接到服务器,可以根据预设周期进行重连操作。
本申请实施例通过当应用程序从后台运行切换为前台运行,且在后台运行的时长超过第一预设阈值,则根据连接状态动态调整当前心跳周期,从而兼顾功耗和实时性。
在上述实施例的基础上,所述连接状态为已连接,所述根据所述连接状态调整当前心跳周期,包括:
将所述当前心跳周期从第一心跳周期调整为第二心跳周期,其中,所述第二心跳周期小于所述第一心跳周期。
在具体的实施过程中,若终端监测到该应用程序的当前连接状态为已连接,则将当前心跳周期从第一心跳周期调整为第二心跳周期。其中,第一心跳周期为应用程序对应的前台运行的默认心跳周期,第二心跳周期也可以是预先设定的。例如:第一心跳周期为5秒,第二心跳周期为2秒。并且,该应用程序在后台运行时也可以有其默认心跳周期,例如10秒。调整后终端每隔2秒向服务器发送一次心跳信令进行网络探测。其目的是防止网络状态发生变化,如果当前心跳周期不变,那么终端在应用程序切换到前台后的5秒钟才会发出一次心跳信令进行网络探测,也就是最快需要5秒钟才能知道当前的网络情况。而如果将当前心跳周期调整为2秒后,那么最快2秒就能探测出网络的情况,从而能够更快地获知当前网络的连接状态。
在上述实施例的基础上,在终端使用第二心跳周期向服务器发送了预设次数的心跳信令之后,再将当前心跳周期从第二心跳周期调整为第一心跳周期。应当说明的是,终端在向应用程序的服务器发送心跳信令时,若链路正常,则服务器也会向终端回复一个数据包。因此,终端可以通过对方回复情况判断互联的双方之间的通讯链路是否已经断开。因此,终端按照第二心跳周期向服务器发送了预设次数的心跳信令,并探测成功,可以理解为:终端向服务器发送了预设次数的心跳信令,并且也收到了服务器返回的预设次数的应答消息,即通过预设次数的心跳信令探测获知终端与服务器的链路正常。其中,预设次数可以为预先设定,例如:可以为5次。
由于第一心跳周期大于第二心跳周期,本申请实施例通过在应用程序刚切换为前台运行时,为了防止网络状态变化,加快心跳信令的发送,从而能够及时获知当前网络状态,当探测了一定次数之后,可以确定网络较为稳定,则将当前心跳周期增大到第一心跳周期,从而降低了对流量以及终端的电量的消耗。
在上述实施例的基础上,当应用程序切换为前台运行后,应用程序的连接状态为未连接,则说明之前所使用的链路已经断开,需要根据预设周期进行与服务器的重连操作,直至连接成功为止。其中,预设周期可以设为2秒,即2秒钟进行一次重连操作。有些重连的逻辑是按照2的次方秒进行重连,即每2,4,8,16,32,64,128,...秒进行一次重连。而本申请通过固定的2秒重连一次,能够减少重连成功所需的耗时,使得终端能够更快的连接到应用程序对应的服务器。可以理解的是,一次重连操作是指终端同时向服务器发起预设个数的TCP连接,其中预设个数可以为10个,即终端同时分别向服务器的10个IP地址发起TCP连接,每个IP地址都会与该终端进行三次握手,在三次握手完成后表示TCP连接成功。在TCP连接成功的IP地址端口中,终端可以选择三次握手耗时最短的IP地址端口建立连接。
在重连成功之后,网络状态可能也会不太好,因此也需要动态调整心跳周期,图3为本申请实施例提供的重连操作后心跳周期调整方法流程示意图,如图3所示,包括:
步骤301:接收用户连接平均耗时;用户连接平均耗时是指某个区域的用户终端有效连接到服务器的平均耗时。服务器可以从云平台中获取终端对应区域的服务器的预设时间段的用户连接平均耗时,例如:预设时间段为一个月,若终端是向北京服务器发送的TCP连接,那么北京服务器将对应的最近一个月的用户连接平均耗时发送给终端。
步骤302:获取连接成功的重连操作中的最短耗时;当终端成功连接上服务器之后,获取该次重连时,终端与每个IP地址进行三次握手的时间,并从中选择最短耗时;其中,选择最短耗时的方法可以为:将终端与每个IP地址进行三次握手的时间按照大小进行排序,从而能够快速的获取到最短耗时。
步骤303:根据所述用户连接平均耗时、所述最短耗时和所述当前心跳周期获得动态心跳周期;可以通过公式Td=M/To*T计算获得所述动态心跳周期,其中,Td为动态心跳周期,M为用户连接平均耗时,To为最短耗时,T为当前心跳周期。从上述公式可以看出,用户连接平均耗时为服务器计算获得的,其不受当前网络状态影响,可以看作一个定值,当前心跳周期也不受当前网络状态影响,因此也可以看作一个定值,只有To取决于当前网络状态的好坏。即若当前网络状态较好,则To的值会比较小,通过上述计算获得的动态心跳周期则会较大;若当前网络状态不太好,则To的值会比较大,通过上述计算获得的动态心跳周期则会较小。
步骤304:将所述当前心跳周期的第一心跳周期调整为所述动态心跳周期。通过步骤303对动态心跳周期的计算,可以使得当前网络状态较好时,计算得到一个较大的动态心跳周期,放慢心跳信令发送的频率,在当前网络状态不太好时,计算得到一个较小的动态心跳周期,从而加快心跳信令发送的频率。
本本申请实施例中,若应用程序处于未连接状态,则加快重连操作,从而保证尽快连接服务器,并且在连接成功后,根据重连操作获得的参数计算动态心跳周期,从而能够在网络状态不太好时,减少心跳周期,在网络状态较好时,增大心跳周期,做到了资源消耗和连接检测及时性的平衡。
图4为本申请实施例提供的一种心跳处理装置结构示意图,该装置可以是电子设备上的模块、程序段或代码。应理解,该装置与上述图1方法实施例对应,能够执行图1方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。如图4所示,包括:时长获取模块401和心跳调整模块402,其中:
时长获取模块401用于若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长;心跳调整模块402用于若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期。
在上述实施例的基础上,所述连接状态为已连接,心跳调整模块402具体用于:
将所述当前心跳周期从第一心跳周期调整为第二心跳周期,其中,所述第二心跳周期小于所述第一心跳周期。
在上述实施例的基础上,心跳调整模块402还用于:
在根据所述第二心跳周期向服务器发送预设次数的心跳信令,并探测成功之后,将所述当前心跳周期从所述第二心跳周期调整为所述第一心跳周期。
在上述实施例的基础上,所述连接状态为未连接,心跳调整模块402具体用于:
根据预设周期进行与服务器的重连操作,直至连接成功为止;其中,一次所述重连操作是指同时向服务器发起预设个数的传输控制协议TCP连接;
获取连接成功的重连操作中的最短耗时;
接收所述服务器发送的用户连接平均耗时,并根据所述用户连接平均耗时、所述最短耗时和所述当前心跳周期获得动态心跳周期;
将所述当前心跳周期的第一心跳周期调整为所述动态心跳周期。
在上述实施例的基础上,心跳调整模块402具体用于:
根据Td=M/To*T计算获得所述动态心跳周期;
其中,Td为所述动态心跳周期,M为所述用户连接平均耗时,To为所述最短耗时,T为所述当前心跳周期。
在上述实施例的基础上,心跳调整模块402具体用于:
统计每个TCP连接中三次握手所需的耗时,并对所有的耗时进行排序,根据排序结果获得最短耗时。
在上述实施例的基础上,所述第一预设阈值通过以下方式获得:
获取所述应用程序对应的终端的目标终端标识,根据所述目标终端标识从预先构建的策略表中获得所述第一预设阈值;其中所述策略表包括多个终端标识以及每一终端标识对应的预设阈值。
综上所述,本申请实施例通过当检测到应用程序切换至前台运行状态,并且在后台运行的时长超过第一预设阈值后,判断应用程序的连接状态,根据连接状态动态调整当前心跳周期,由于连接状态不同设置不同的当前心跳周期,一方面能够及时进行连接检测,另一方面能够节省资源消耗。
图5为本申请实施例提供的电子设备实体结构示意图,如图5所示,所述电子设备,包括:处理器(processor)501、存储器(memory)502和总线503;其中,
所述处理器501和存储器502通过所述总线503完成相互间的通信;
所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长;若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期。
处理器501可以是一种集成电路芯片,具有信号处理能力。上述处理器501可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器502可以包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长;若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长;若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种应用程序的心跳处理方法,其特征在于,包括:
若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长;
若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期;
所述连接状态为已连接,所述根据所述连接状态调整当前心跳周期,包括:
将所述当前心跳周期从第一心跳周期调整为第二心跳周期,其中,所述第二心跳周期小于所述第一心跳周期。
2.根据权利要求1所述的方法,其特征在于,在将所述第一心跳周期调整为第二心跳周期之后,所述方法还包括:
在根据所述第二心跳周期向服务器发送预设次数的心跳信令,并探测成功之后,将所述当前心跳周期从所述第二心跳周期调整为所述第一心跳周期。
3.根据权利要求1所述的方法,其特征在于,所述连接状态为未连接,所述根据所述连接状态调整当前心跳周期,包括:
根据预设周期进行与服务器的重连操作,直至连接成功为止;其中,一次所述重连操作是指同时向服务器发起预设个数的传输控制协议TCP连接;
获取连接成功的重连操作中的最短耗时;
接收所述服务器发送的用户连接平均耗时,并根据所述用户连接平均耗时、所述最短耗时和所述当前心跳周期获得动态心跳周期;
将所述当前心跳周期的第一心跳周期调整为所述动态心跳周期。
4.根据权利要求3所述的方法,其特征在于,所述根据所述用户连接平均耗时、所述最短耗时和所述当前心跳周期获得动态心跳周期,包括:
根据Td=M/To*T计算获得所述动态心跳周期;
其中,Td为所述动态心跳周期,M为所述用户连接平均耗时,To为所述最短耗时,T为所述当前心跳周期。
5.根据权利要求3所述的方法,其特征在于,所述获取连接成功的重连操作中的最短耗时,包括:
统计每个TCP连接中三次握手所需的耗时,并对所有的耗时进行排序,根据排序结果获得最短耗时。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述第一预设阈值通过以下方式获得:
获取所述应用程序对应的终端的目标终端标识,根据所述目标终端标识从预先构建的策略表中获得所述第一预设阈值;其中所述策略表包括多个终端标识以及每一终端标识对应的预设阈值。
7.一种应用程序的心跳处理装置,其特征在于,包括:
时长获取模块,用于若检测到应用程序从后台运行状态切换为前台运行状态,则获取所述应用程序处于后台运行状态的时长;
心跳调整模块,用于若所述时长大于第一预设阈值,则获取所述应用程序的连接状态,根据所述连接状态调整当前心跳周期;所述当前心跳周期为向服务器发送心跳数据的周期;
所述连接状态为已连接,心跳调整模块具体用于:
将所述当前心跳周期从第一心跳周期调整为第二心跳周期,其中,所述第二心跳周期小于所述第一心跳周期。
8.一种电子设备,其特征在于,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1-6任一项所述的方法。
9.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910733575.7A CN110474975B (zh) | 2019-08-08 | 2019-08-08 | 应用程序的心跳处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910733575.7A CN110474975B (zh) | 2019-08-08 | 2019-08-08 | 应用程序的心跳处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110474975A CN110474975A (zh) | 2019-11-19 |
CN110474975B true CN110474975B (zh) | 2022-03-15 |
Family
ID=68510548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910733575.7A Active CN110474975B (zh) | 2019-08-08 | 2019-08-08 | 应用程序的心跳处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110474975B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111130951B (zh) * | 2019-12-31 | 2022-08-23 | 中消云(北京)物联网科技研究院有限公司 | 设备状态检测方法、装置及存储介质 |
CN112241318A (zh) * | 2020-11-03 | 2021-01-19 | 中国航空工业集团公司西安航空计算技术研究所 | 一种消除表征盲点的处理器心跳计数方法 |
CN114585108A (zh) * | 2020-11-18 | 2022-06-03 | 成都鼎桥通信技术有限公司 | 连接处理方法及设备 |
CN113965495A (zh) * | 2021-09-29 | 2022-01-21 | 青岛海尔科技有限公司 | 终端应用程序的探活方法、装置、电子设备及存储介质 |
CN115190160A (zh) * | 2022-05-25 | 2022-10-14 | 杭州脸脸会网络技术有限公司 | 屏设备的断网监控方法、装置、电子装置和存储介质 |
CN116319947B (zh) * | 2023-05-18 | 2023-07-21 | 云账户技术(天津)有限公司 | 一种app前后台切换中状态信息的获取方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104144159A (zh) * | 2014-06-26 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 智能心跳保活方法及智能心跳保活系统 |
CN104991850A (zh) * | 2015-06-27 | 2015-10-21 | 广州华多网络科技有限公司 | 一种应用程序的心跳包控制方法和装置 |
CN106375148A (zh) * | 2016-08-30 | 2017-02-01 | 北京北信源软件股份有限公司 | 即时通讯中的动态网络心跳处理方法及终端 |
CN107645529A (zh) * | 2016-07-21 | 2018-01-30 | 腾讯科技(深圳)有限公司 | 心跳包发送方法及装置 |
US10143031B2 (en) * | 2013-04-30 | 2018-11-27 | Seven Networks, Llc | Detection and reporting of keepalive messages for optimization of keepalive traffic in a mobile network |
-
2019
- 2019-08-08 CN CN201910733575.7A patent/CN110474975B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10143031B2 (en) * | 2013-04-30 | 2018-11-27 | Seven Networks, Llc | Detection and reporting of keepalive messages for optimization of keepalive traffic in a mobile network |
CN104144159A (zh) * | 2014-06-26 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 智能心跳保活方法及智能心跳保活系统 |
CN104991850A (zh) * | 2015-06-27 | 2015-10-21 | 广州华多网络科技有限公司 | 一种应用程序的心跳包控制方法和装置 |
CN107645529A (zh) * | 2016-07-21 | 2018-01-30 | 腾讯科技(深圳)有限公司 | 心跳包发送方法及装置 |
CN106375148A (zh) * | 2016-08-30 | 2017-02-01 | 北京北信源软件股份有限公司 | 即时通讯中的动态网络心跳处理方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN110474975A (zh) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110474975B (zh) | 应用程序的心跳处理方法、装置、电子设备及存储介质 | |
CN108834203B (zh) | 网络切换方法、装置、终端及存储介质 | |
CN107645529B (zh) | 心跳包发送方法及装置 | |
CN110708696B (zh) | 网络数据的恢复方法、装置、存储介质及电子设备 | |
US10425318B2 (en) | Method for heartbeat packet processing by using proxy, apparatus, and communications system | |
WO2013124541A1 (en) | Method and apparatus for dynamic server|client controlled connectivity logic | |
CN106851799B (zh) | 一种长连接中心跳包的发送方法及装置 | |
CN108712485A (zh) | 一种物联网设备的资源订阅方法和装置 | |
CN111698098A (zh) | 通信方法、装置和计算机可读存储介质 | |
CN109769029B (zh) | 基于用电信息采集系统的通信连接方法及终端设备 | |
CN109040295B (zh) | 异常断线的确定方法及装置、终端及存储介质 | |
CN110691398B (zh) | 智能设备的网络交互方法、系统、设备及存储介质 | |
CN106851790B (zh) | 一种功耗变化控制方法及系统以及移动终端 | |
CN103338144A (zh) | 一种会话数据同步方法和装置 | |
WO2023098055A1 (zh) | 低功耗模式的开启方法和装置、存储介质及电子装置 | |
CN111093238A (zh) | 无线网络的控制方法、装置、存储介质及电子设备 | |
CN114125023B (zh) | 数据连接的确定方法及装置、存储介质及电子装置 | |
CN110474807B (zh) | 一种日志处理方法及装置 | |
CN110650259B (zh) | 呼叫请求的响应方法、装置、服务器、终端及存储介质 | |
US20170127356A1 (en) | Method and apparatus for prolonging lasting time of inactive mode | |
US10673726B2 (en) | Heartbeat packet timer identification method, and device | |
CN112769889B (zh) | 服务数据的推送方法、装置、存储介质以及电子装置 | |
EP2907346B1 (en) | Method, node and computer program for reset of timers | |
CN116016442A (zh) | ip地址资源管理方法、云网关、电子设备及存储介质 | |
WO2021163891A1 (zh) | 通信方法、装置、设备及存储介质 |
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 |