心跳检测方法及应用服务器与流程

文档序号:11709986阅读:514来源:国知局
心跳检测方法及应用服务器与流程
本发明涉及通信
技术领域
,尤其涉及一种心跳检测方法及应用服务器。
背景技术
:在近年来,随着移动互联网技术的快速发展,手机、平板电脑等移动终端的功能越来越丰富,用户在移动终端上安装的第三方应用程序的种类和数量也不断增加。对一款应用程序而言,其客户端往往被安装于几十上百万的移动终端中而被移动终端用户所使用。一般地,应用程序客户端在被使用时需要与应用服务器保持有一个长连接,通过所述长连接才能与所述应用服务器进行数据交互,实现该应用程序的功能。为维持所述长连接,安装有应用程序客户端的移动终端需要定期向应用服务器发送心跳包,若应用服务器接收到该心跳包,则说明移动终端在线,二者之间的长连接正常可用。反之,若应用服务器未接收到心跳包,则说明移动终端不在线,所述长连接出现异常。通常,为节约资源,若未接收到心跳包,应用服务器会主动关闭所述长连接。然而,心跳包遗漏的影响因素很多(例如网络信号不佳、系统故障等),偶然的遗漏并不意味着长连接已断开,故,现有技术中检测到心跳包遗漏就由应用服务器做关闭长连接的处理方式不够灵活,亟需改进。技术实现要素:有鉴于此,本发明提出一种心跳检测方法及应用服务器,能够更加灵活地对安装有应用程序客户端的移动终端与应用服务器之间的长连接进行检测,提高用户体验。首先,为实现上述目的,本发明提出一种应用服务器,所述应用服务器包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的心跳检测系统,所述心跳检测系统被所述处理器执行时实现如下步骤:在接收到移动终端客户端所发送的心跳包时,查询与所述移动终端客户端长连接的应用服务器内存中是否存储有所述移动终端客户端的心跳检测记录;若所述应用服务器内存中存储有所述移动终端客户端的心跳检测记录,则根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新;以预设的频率轮询所述应用服务器内存中所存储的心跳检测记录,确定所述心跳检测记录中是否存在异常心跳检测记录;若存在所述异常心跳检测记录,则删除所述异常心跳检测记录,并断开与所述异常心跳检测记录相对应的移动终端客户端和所述应用服务器之间的长连接。可选地,在根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新的步骤之前,所述处理器还用于执行所述心跳检测系统,以实现以下步骤:计算所述心跳包的接收时间与所述心跳检测记录中所记载心跳检测时间之间的时间差;若所述时间差超出预设时间,则直接确定对应的所述心跳检测记录为所述异常心跳检测记录。可选地,所述根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新的步骤,具体包括:根据所述心跳包的接收时间更新所述心跳检测记录中记载的心跳检测时间;所述确定所述心跳检测记录中是否存在异常心跳检测记录的步骤,具体包括:计算每一条心跳检测记录中所记载的心跳检测时间与当前轮询时间的时间差值,并确定所述心跳检测记录中心跳检测时间与当前轮询时间的时间差值超出预设阈值的心跳检测记录为所述异常心跳检测记录。可选地,所述根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新的步骤,具体包括:根据所接收的心跳包更新所述心跳检测记录中记载的心跳检测次数;所述确定所述心跳检测记录中是否存在异常心跳检测记录的步骤,具体包括:在预设轮询周期内连续对每一条心跳检测记录中所记载的心跳检测次数进行统计,并确定所述心跳检测记录中心跳检测次数在所述预设轮询周期内均保持不变的心跳检测记录为所述异常心跳检测记录。可选地,在所述接收到移动终端客户端所发送的心跳包的步骤之前,所述处理器还用于执行所述心跳检测系统,以实现以下步骤:在移动终端客户端长连接上所述应用服务器时,查询所述应用服务器内存中是否存储有与所述移动终端客户端相关的心跳检测记录;若所述应用服务器内存中未存储有与所述移动终端客户端相关的心跳检测记录,则在所述应用服务器内存中新增所述移动终端客户端的心跳检测记录。此外,为实现上述目的,本发明还提供一种心跳检测方法,该方法应用于应用服务器,所述方法包括:在接收到移动终端客户端所发送的心跳包时,查询所述应用服务器内存中是否存储有所述移动终端客户端的心跳检测记录;若所述应用服务器内存中存储有所述移动终端客户端的心跳检测记录,则根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新;以预设的频率轮询所述应用服务器内存中所存储的心跳检测记录,确定所述心跳检测记录中是否存在异常心跳检测记录;若存在所述异常心跳检测记录,则删除所述异常心跳检测记录,并断开与所述异常心跳检测记录相对应的移动终端客户端和所述应用服务器之间的长连接。可选地,在根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新的步骤之前,还包括:计算所述心跳包的接收时间与所述心跳检测记录中所记载心跳检测时间之间的时间差;若所述时间差超出预设时间,则直接确定对应的所述心跳检测记录为所述异常心跳检测记录。可选地,所述根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新的步骤,具体包括:根据所述心跳包的接收时间更新所述心跳检测记录中记载的心跳检测时间;所述确定所述心跳检测记录中是否存在异常心跳检测记录的步骤,具体包括:计算每一条心跳检测记录中所记载的心跳检测时间与当前轮询时间的时间差值,并确定所述心跳检测记录中心跳检测时间与当前轮询时间的时间差值超出预设阈值的心跳检测记录为所述异常心跳检测记录。可选地,所述根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新的步骤,具体包括:根据所接收的心跳包更新所述心跳检测记录中记载的心跳检测次数;所述确定所述心跳检测记录中是否存在异常心跳检测记录的步骤,具体包括:在预设轮询周期内连续对每一条心跳检测记录中所记载的心跳检测次数进行统计,并确定所述心跳检测记录中心跳检测次数在所述预设轮询周期内均保持不变的心跳检测记录为所述异常心跳检测记录。可选地,在所述接收到移动终端客户端所发送的心跳包的步骤之前,所述方法还包括:在移动终端客户端长连接上所述应用服务器时,查询所述应用服务器内存中是否存储有与所述移动终端客户端相关的心跳检测记录;若所述应用服务器内存中未存储有与所述移动终端客户端相关的心跳检测记录,则在所述应用服务器内存中新增所述移动终端客户端的心跳检测记录。进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有心跳检测系统,所述心跳检测系统可被至少一个处理器执行,以使所述至少一个处理器执行如上述的心跳检测方法的步骤。相较于现有技术,本发明所提出的应用服务器、心跳检测方法及计算机可读存储介质,首先通过将与应用服务器长连接的移动终端客户端的心跳检测记录保存至内存;然后,在接收到移动终端客户端发送的心跳包时,实时对内存中存储的心跳检测记录进行更新;接着,在应用服务器侧使用轮询的方式对更新后的心跳检测记录进行查询,仅在移动终端客户端发送心跳包或者应用服务器接收心跳包严重超时(即心跳检测记录中的心跳检测时间与当前轮询时间的时间差值超出预设阈值,或者心跳检测记录中的心跳检测次数持续在预设轮询周期内保持不变)时,才断开移动终端客户端与应用服务器之间的长连接。这样,既可以避免现有技术中一检测到应用服务器未收到心跳包就立刻断开所述长连接的弊端,也可以从应用服务器侧对于该应用服务器进行长连接的移动终端客户端进行更灵活地管理。附图说明图1是本发明各个实施例一可选的应用环境示意图;图2是图1中应用服务器一可选的硬件架构的示意图;图3是本发明心跳检测系统第一、第二实施例的功能模块示意图;图4是本发明心跳检测系统第三实施例的功能模块示意图;图5为本发明心跳检测方法第一实施例的实施流程示意图;图6为本发明心跳检测方法第二实施例的实施流程示意图;图7为本发明心跳检测方法第三实施例的实施流程示意图。附图标记:移动终端1应用服务器2网络3存储器11处理器12网络接口13心跳检测系统200查询模块201更新模块202轮询模块203处理模块204新增模块205流程步骤s301-s304、s401-s402、s501-s502本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。参阅图1所示,是本发明各个实施例一可选的应用环境示意图。在本实施例中,本发明可应用于包括,但不仅限于,移动终端1、应用服务器2、网络3的应用环境中。其中,所述移动终端1可以是移动电话、智能电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、导航装置等等的可移动设备,以及诸如数字tv、台式计算机、笔记本、服务器等等的固定终端。所述应用服务器2可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,该应用服务器2可以是独立的服务器,也可以是多个服务器所组成的服务器集群。所述网络3可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(globalsystemofmobilecommunication,gsm)、宽带码分多址(widebandcodedivisionmultipleaccess,wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi-fi等无线或有线网络。其中,所述应用服务器2中通过所述网络3分别与一个或多个所述移动终端1(图中仅示出一个)通信连接,每一个所述移动终端1中均安装并运行有与所述应用服务器2对应的应用程序客户端(后文简称“移动终端客户端”)。所述移动终端客户端用于响应移动终端用户的操作,在所述移动终端客户端与所述应用服务器2之间创建长连接,以使所述移动终端客户端能够通过所述长连接与所述应用服务器2进行数据传输和交互。本实施例中,当所述应用服务器2内安装并运行有心跳检测系统200时,当所述心跳检测系统200运行时,所述应用服务器2侦测移动终端客户端所发送的心跳包,在接收到所述心跳包时查询所述应用服务器2的内存中与之对应的心跳检测记录,进而对所述心跳检测记录进行更新,使得所述应用服务器2能够根据更新后的心跳检测记录来判断移动终端客户端与所述应用服务器2之间的长连接是否符合预设的条件,进而根据不同的判断结果更为灵活地对所述长连接进行不同地处理,避免占用过多的服务器资源。参阅图2所示,是图1中应用服务器2一可选的硬件架构的示意图。本实施例中,所述应用服务器2可包括,但不仅限于,可通过系统总线相互通信连接存储器11、处理器12、网络接口13。需要指出的是,图2仅示出了具有组件11-13的移动终端1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述应用服务器2的内部存储单元,例如该应用服务器2的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述应用服务器2的外部存储设备,例如该应用服务器2上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器11还可以既包括所述应用服务器2的内部存储单元也包括其外部存储设备。本实施例中,所述存储器11通常用于存储安装于所述应用服务器2的操作系统和各类应用软件,例如所述心跳检测系统200的程序代码等。此外,所述存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。所述处理器12在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述应用服务器2的总体操作,例如执行与所述移动终端1进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行所述的心跳检测系统200等。所述网络接口13可包括无线网络接口或有线网络接口,该网络接口13通常用于在所述应用服务器2与其他电子设备之间建立通信连接。本实施例中,所述网络接口13主要用于通过所述网络3将所述应用服务器2与一个或多个所述移动终端1相连,在所述应用服务器2与所述一个或多个移动终端1之间的建立数据传输通道和通信连接。至此,己经详细介绍了本发明各个实施例的应用环境和相关设备的硬件结构和功能。下面,将基于上述应用环境和相关设备,提出本发明的各个实施例。首先,本发明提出一种心跳检测系统200。参阅图3所示,是本发明心跳检测系统200第一实施例的功能模块图。本实施例中,所述的心跳检测系统200可以被分割成一个或多个模块,所述一个或者多个模块被存储于所述存储器11中,并由一个或多个处理器(本实施例中为所述处理器12)所执行,以完成本发明。例如,在图3中,所述的心跳检测系统200可以被分割成查询模块201、更新模块202、轮询模块203、以及处理模块204。本发明所称的功能模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述心跳检测系统200在所述应用服务器2中的执行过程。以下将就各功能模块201-204的功能进行详细描述。所述查询模块201,用于在接收到移动终端客户端所发送的心跳包时,查询所述应用服务器2内存中是否存储有所述移动终端客户端的心跳检测记录。通常,一款应用程序客户端的安装量可能多达百万,若所述应用服务器2长时间维持着与每一个移动终端客户端之间的长连接,则会占用大量的服务器资源,给所述应用服务器2的运营带来巨大的压力。因此,现有技术中,为了节约服务器资源,应用服务器2通常会将通过心跳检测机制来检测与之长连接的移动终端客户端是否处于异常不可用的状态。一般地,上述心跳检测机制一般包括:1)移动终端客户端定期向与之长连接的应用服务器2发送心跳包;2)应用服务器2接收移动终端客户端所发送的心跳包并反馈对应的信息,同时启动一个计时器对后续移动终端客户端的发包时间进行监测,用以判断移动终端客户端是否发包超时(即超出预设发包周期)。这样,通过应用服务器2和移动终端客户端之间的定期收包和发包以及对发包周期进行监测,可以确定相互长连接的应用服务器2和移动终端客户端是否均“在线”,进而确定所述长连接是否正常可用。需要指出的是,对现有的心跳检测机制而言,只要应用服务器2未在预设发包周期内接收到由移动终端客户端所发送的心跳包,则会判定与之长连接的移动终端客户端处于异常状态,所述长连接不可用,进而直接断开与所述移动终端客户端之间的长连接,释放资源。可以看出,上述心跳检测机制虽然能够及时释放出现异常的长连接所占用的服务器资源,但同时也具有较高的误判率。具体而言,通常地,导致心跳包漏发或者漏收(即上文所述的应用服务器2未在预设周期接收到由移动终端客户端所发送的心跳包)的影响因素是多种多样的,例如移动终端用户误关了所述移动终端1的数据流量、所述移动终端1从移动通信信号不佳的区域经过、移动通信网络不稳定等均有可能导致所述移动终端客户端未发出所述心跳包,或者即使该移动终端客户端发送了所述心跳包但该心跳包未被所述应用服务器2接收等。当上述情况出现时,所述应用服务器2与所述移动终端客户端之间的长连接很有可能只是短暂性异常,且所述短暂性异常一般可以很快恢复,例如只要移动终端1从移动通信信号不佳的区域离开或者只要移动终端用户及时重新打开移动终端1的数据流量开关,则所述长连接即可恢复正常可用状态等。因此,为降低现有心跳检测机制的误判率,本实施例预先将与所述应用服务器2的保持长连接状态的移动终端客户端对应的心跳检测记录存储于该应用服务器2的内存中,用以在接收到由移动终端客户端所发送的心跳包时,直接从该内存中查询与所述移动终端客户端对应的心跳检测记录,进而对该心跳检测记录记载的信息进行更新,以使后续工作流程中能够根据更新后的心跳检测记录来更为准确地判定是否断开所述移动终端客户端与所述应用服务器2之间的长连接。其中,所述移动终端客户端对应的心跳检测记录可包括,但不仅限于,所述移动终端1的标识、所述长连接的id、该移动终端客户端最近一次向所述应用服务器2发送心跳包的时间(后文简称为“心跳检测时间”)、该移动终端客户端历史向所述应用服务器2发送心跳包的次数等信息。具体地,当接收到移动终端客户端所发送的心跳包时,所述查询模块201首先获取所述移动终端客户端的id和所述移动终端1的标识,然后根据所获取的移动终端客户端id或移动终端1标识从所述应用服务器2的内存中查询是否存在对应的心跳检测记录。所述更新模块202,用于在所述应用服务器2内存中存储有所述移动终端客户端的心跳检测记录时,根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新。从上文可知,本实施例将所述心跳检测记录存储于所述应用服务器2内存中,其目的是通过所述心跳检测记录实时记录所述移动终端客户端向所述应用服务器2发送心跳包的信息(例如记录所述移动终端客户端所发心跳包被应用服务器2所接收的接收时间和历史接收次数等)。因此,在所述应用服务器2接收到所述移动终端客户端所发送的心跳包后,若该应用服务器2的内存中存在与所述移动终端客户端对应的所述心跳检测记录,则所述更新模块202可以根据所接收的心跳包,对所述心跳检测记录中所记载的信息进行更新。需要说明的是,所述更新可包括,但不仅限于,将所述心跳检测记录中记载的心跳检测时间(即移动终端客户端最近一次向所述应用服务器2发送心跳包,所述应用服务器2接收到所述心跳包的时间)更新为所述应用服务器2当前所接收心跳包的接收时间,或者将所述心跳检测记录中记载的心跳检测次数(移动终端客户端历史向所述应用服务器2发送心跳包的次数)增加一次等。需要补充的是,若所述移动终端客户端是第一次向所述应用服务器2发送所述心跳包,则与该移动终端客户端对应的所述心跳检测记录中所记载的所述心跳检测时间(即该移动终端客户端最近一次向所述应用服务器2发送心跳包,所述应用服务器2接收到所述心跳包的时间)和所述心跳检测次数(即该移动终端客户端历史向所述应用服务器2发送心跳包的次数)均为空。此时,所述更新模块202对所述心跳检测记录的更新可以是:直接将所述心跳检测记录中所记载的所述心跳检测时间记录所述应用服务器2当前所接收心跳包的接收时间,以及直接记录所述心跳检测记录中所记载的所述心跳检测次数为一次等。所述轮询模块203,用于以预设的频率轮询所述应用服务器2内存中所存储的心跳检测记录,确定所述心跳检测记录中是否存在异常心跳检测记录。从上文可知,所述移动终端客户端会定期向所述应用服务器2发送心跳包,来检测两者之间的长连接的状况。而所述应用服务器2则会在接收到由所述移动终端客户端所发送的心跳包后更新存储于其内存中的所述心跳检测记录,且所述心跳检测记录记载有所述移动终端客户端心跳包发送情况的信息。因此,本实施例中,所述应用服务器2可通过编码设定一特定的轮询机制,所述轮询机制用于定期轮询存储于所述应用服务器2内存中的每一条所述心跳检测记录,进而对每一条心跳检测记录中的信息进行核查,核查出所述心跳检测记录中的异常心跳检测记录,最终根据所述异常心跳检测记录来对与之对应的长连接进行管理。这样,可从应用服务器2侧实现对该应用服务器2保持长连接的一个或多个移动终端客户端进行灵活的长连接管理。在一些实施例中,所述异常心跳检测记录可以是指所述心跳检测记录中,所记载的心跳检测时间与当前轮询时间的时间差值超出预设阈值的心跳检测记录。其中,需要说明的是,所述预设阈值优选为与所述心跳检测记录对应的移动终端客户端的心跳包发包周期的3倍的时间值。即,若移动终端客户端5分钟发一次心跳包,则所述预设阈值可设为15分钟。具体而言,所述轮询模块203可以首先以预设的频率轮询所述应用服务器2内存中所存储的心跳检测记录,然后计算每一条所述心跳检测记录中所记载的心跳检测时间与当前轮询时间的时间差值,进而比较所述时间差值是否超出预设阈值来确定所述心跳检测记录中的异常心跳检测记录。一般地,若所述时间差值超出所述预设阈值,则说明对应的心跳检测记录长时间没有进行过更新,也即对应的移动终端客户端长时间未向所述应用服务器2发送过心跳包,故所述轮询模块203可以判定对应的心跳检测记录为所述异常心跳检测记录。反之,若所述时间差值未超出所述预设阈值,则说明对应的心跳检测记录长时间在近期进行过更新,也即对应的移动终端客户端近期向所述应用服务器2发送过心跳包,故所述轮询模块203可以判定对应的心跳检测记录为正常的心跳检测记录。在另一些实施例中,所述异常心跳检测记录还可以是指所述心跳检测记录中,所记载的心跳检测次数在预设轮询周期内均保持不变的的心跳检测记录。其中,需要说明的是,与所述预设轮询周期对应的时间值优选为不小于移动终端客户端心跳包的发包周期的时间值。即,若移动终端客户端的发包周期为5分钟发一次心跳包,且所述轮询周期为2分钟轮询一次,则所述预设轮询周期可以是3个轮询周期。具体而言,所述轮询模块203可以首先以预设的频率轮询所述应用服务器2内存中所存储的心跳检测记录,然后在所述预设轮询周期内连续对每一条所述心跳检测记录中所记载的心跳检测次数进行统计,进而通过核查所述心跳检测记录中是否存在心跳检测次数在所述预设轮询周期内均保持不变的心跳检测记录来确定所述心跳检测记录中的异常心跳检测记录。一般地,若某一条心跳检测记录中记载的心跳检测次数在所述预设轮询周期内均保持不变,则说明对应的心跳检测记录长时间没有进行过更新,也即对应的移动终端客户端长时间未向所述应用服务器2发送过心跳包,故所述轮询模块203可以判定对应的心跳检测记录为所述异常心跳检测记录。反之,若某一条心跳检测记录中记载的心跳检测次数在所述预设轮询周期内均发生了变化,则说明对应的心跳检测记录长时间在近期进行过更新,也即对应的移动终端客户端近期向所述应用服务器2发送过心跳包,故所述轮询模块203可以判定对应的心跳检测记录为正常的心跳检测记录。所述处理模块204,用于在所述心跳检测记录中存在异常心跳检测记录时,删除所述异常心跳检测记录,并断开与所述异常心跳检测记录相对应的移动终端客户端和所述应用服务器之间的长连接。从上文可知,当某一条心跳检测记录中记载的心跳检测时间与所述当前轮询时间的时间差值超出所述预设阈值,或者该心跳检测记录中记载的心跳检测次数在预设轮询周期内保持不变时,说明所述心跳检测记录长时间没有进行过更新,与之对应的移动终端客户端长时间未向所述应用服务器2发送过心跳包,一般可以判定与所述心跳检测记录对应的移动终端客户与所述应用服务器2之间的长连接出现的并非短暂性异常。故,本实施例中,所述处理模块204可以直接将删除异常心跳检测记录,并断开与所述异常心跳检测记录相对应的移动终端客户端和所述应用服务器之间的长连接,以释放出该长连接所占用的服务器资源。通过上述功能模块201-204,本发明所提出的心跳检测系统200,首先通过将与应用服务器2长连接的移动终端客户端的心跳检测记录保存至内存;然后,在接收到移动终端客户端发送的心跳包时,对内存中存储的心跳检测记录进行更新;接着,在应用服务器侧使用轮询的方式对更新后的心跳检测记录进行查询,仅在移动终端客户端发送心跳包或者应用服务器2接收心跳包严重超时(即心跳检测记录中的心跳检测时间与当前轮询时间的时间差值超出预设阈值,或者心跳检测记录中的心跳检测次数持续在预设轮询周期内保持不变)时,才断开移动终端客户端与应用服务器2之间的长连接。这样,既可以避免现有技术中一检测到应用服务器2未收到心跳包就立刻断开所述长连接的弊端,也可以从应用服务器2侧对于该应用服务器2进行长连接的移动终端客户端进行更灵活地管理。进一步地,基于本发明心跳检测系统200的上述第一实施例,提出本发明的第二实施例(如图3所示)。本实施例中,所述更新模块202,还用于:在根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新之前,计算所述心跳包的接收时间与所述心跳检测记录中所记载心跳检测时间之间的时间差;以及在所述时间差超出预设时间时,直接确定对应的所述心跳检测记录为所述异常心跳检测记录。从上文可知,第一实施例通过在应用服务器2侧建立轮询机制来监测所述应用服务器2与所述移动终端客户端之间的心跳检测,并在移动终端客户端发送心跳包或者应用服务器接收心跳包严重超时(即心跳检测记录中的心跳检测时间与当前轮询时间的时间差值超出预设阈值,或者心跳检测记录中的心跳检测次数持续在预设轮询周期内保持不变)时,判定长连接异常不可用,进而断开移动终端客户端与应用服务器之间的长连接,以节约服务器资源。而本实施例则是通过直接比较相邻两次应用服务器2接收到心跳包的时间来对长连接是否异常进行判断。具体地,当应用服务器2接收到所述移动终端客户端发送的心跳包时,所述更新模块202首先查询所述应用服务器2内存中存储的与该移动终端客户端对应的心跳检测记录,从所述心跳检测记录中获取所记载的心跳检测时间(也即所述移动终端客户端最近一次向所述应用服务器2发送心跳包,所述应用服务器2接收到所述心跳包的时间);然后,计算所述心跳包的接收时间与所述心跳检测记录中所记载心跳检测时间之间的时间差;最后,将所述时间差与预设时间进行比较,来判断移动终端客户端与应用服务器之间的长连接的状态。其中,所述预设时间优选为所述移动终端客户端的心跳包发包周期3倍的时间值。一般地,若所述时间差超出所述预设时间,则说明所述应用服务器2连续两次接收到心跳包的时间过长,所述应用服务器2与所述移动终端客户端之间的长连接遗漏较多的心跳包,所述长连接异常不可用。此时,所述更新模块202可以判定与所述长连接对应的心跳检测记录为所述异常心跳检测记录。反之,若所述时间差未超出所述预设时间,则说明所述应用服务器2连续两次接收到心跳包的时间正常,所述应用服务器2与所述移动终端客户端之间的长连接并未遗漏过多的心跳包,所述长连接正常可用。此时,所述更新模块202可以判定与所述长连接对应的心跳检测记录为正常心跳检测记录。通过上述功能模块202,本发明所提出的心跳检测系统200可以通过直接比较相邻两次应用服务器2接收到心跳包的时间来对长连接是否异常进行判断,进而对异常的长连接进行断开处理,节约服务器资源。进一步地,基于本发明心跳检测系统200的上述第一和第二实施例,提出本发明的第三实施例(如图4所示)。本实施例中,所述的心跳检测系统200还包括新增模块205,其中:所述查询模块201,还用于在移动终端客户端长连接上所述应用服务器2时,查询所述应用服务器2内存中是否存储有与所述移动终端客户端相关的心跳检测记录。所述新增模块205,用于在所述应用服务器2内存中未存储有与所述移动终端客户端相关的心跳检测记录时,在所述应用服务器2内存中新增所述移动终端客户端的心跳检测记录。从前文可知,当移动终端客户端与所述应用服务器2之间的长连接异常不可用,会删除所述应用服务器2内存中对应的心跳检测记录。因此,本实施例中,当所述移动终端客户端与所述应用服务器2建立长连接(包括第一次建立和重新建立)时,若检测到所述应用服务器2内存中没有与所述移动终端客户端相对应的心跳检测记录,则需要在所述应用服务器2内存中新增与所述移动终端客户端对应的心跳检测记录。其中,所述新增的心跳检测记录至少包括,但不仅限于,所述移动终端1的标识、所述长连接的id等信息。通过上述功能模块205,本发明所提出的心跳检测系统200,还能够在移动终端客户端与所述应用服务器2建立长连接时,预先检测到应用服务器2内存中是否存储有与移动终端客户端相对应的心跳检测记录,若没有则在该应用服务器2的内存中新增对应的心跳检测记录,用以在后续对所述长连接是否正常可用进行监测的工作提供方便。此外,本发明还提出一种心跳检测方法。参阅图5所示,是本发明心跳检测方法第一实施例的实施流程示意图。在本实施例中,根据不同的需求,图5所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。步骤s301,在接收到移动终端客户端所发送的心跳包时,查询所述应用服务器2内存中是否存储有所述移动终端客户端的心跳检测记录。通常,一款应用程序客户端的安装量可能多达百万,若所述应用服务器2长时间维持着与每一个移动终端客户端之间的长连接,则会占用大量的服务器资源,给所述应用服务器2的运营带来巨大的压力。因此,现有技术中,为了节约服务器资源,应用服务器2通常会将通过心跳检测机制来检测与之长连接的移动终端客户端是否处于异常不可用的状态。一般地,上述心跳检测机制一般包括:1)移动终端客户端定期向与之长连接的应用服务器2发送心跳包;2)应用服务器2接收移动终端客户端所发送的心跳包并反馈对应的信息,同时启动一个计时器对后续移动终端客户端的发包时间进行监测,用以判断移动终端客户端是否发包超时(即超出预设发包周期)。这样,通过应用服务器2和移动终端客户端之间的定期收包和发包以及对发包周期进行监测,可以确定相互长连接的应用服务器2和移动终端客户端是否均“在线”,进而确定所述长连接是否正常可用。需要指出的是,对现有的心跳检测机制而言,只要应用服务器2未在预设发包周期内接收到由移动终端客户端所发送的心跳包,则会判定与之长连接的移动终端客户端处于异常状态,所述长连接不可用,进而直接断开与所述移动终端客户端之间的长连接,释放资源。可以看出,上述心跳检测机制虽然能够及时释放出现异常的长连接所占用的服务器资源,但同时也具有较高的误判率。具体而言,通常地,导致心跳包漏发或者漏收(即上文所述的应用服务器2未在预设周期接收到由移动终端客户端所发送的心跳包)的影响因素是多种多样的,例如移动终端用户误关了所述移动终端1的数据流量、所述移动终端1从移动通信信号不佳的区域经过、移动通信网络不稳定等均有可能导致所述移动终端客户端未发出所述心跳包,或者即使该移动终端客户端发送了所述心跳包但该心跳包未被所述应用服务器2接收等。当上述情况出现时,所述应用服务器2与所述移动终端客户端之间的长连接很有可能只是短暂性异常,且所述短暂性异常一般可以很快恢复,例如只要移动终端1从移动通信信号不佳的区域离开或者只要移动终端用户及时重新打开移动终端1的数据流量开关,则所述长连接即可恢复正常可用状态等。因此,为降低现有心跳检测机制的误判率,本实施例预先将与所述应用服务器2的保持长连接状态的移动终端客户端对应的心跳检测记录存储于该应用服务器2的内存中,用以在接收到由移动终端客户端所发送的心跳包时,直接从该内存中查询与所述移动终端客户端对应的心跳检测记录,进而对该心跳检测记录记载的信息进行更新,以使后续工作流程中能够根据更新后的心跳检测记录来更为准确地判定是否断开所述移动终端客户端与所述应用服务器2之间的长连接。其中,所述移动终端客户端对应的心跳检测记录可包括,但不仅限于,所述移动终端1的标识、所述长连接的id、该移动终端客户端最近一次向所述应用服务器2发送心跳包的时间(后文简称为“心跳检测时间”)、该移动终端客户端历史向所述应用服务器2发送心跳包的次数等信息。具体地,当接收到移动终端客户端所发送的心跳包时,首先获取所述移动终端客户端的id和所述移动终端1的标识,然后根据所获取的移动终端客户端id或移动终端1标识从所述应用服务器2的内存中查询是否存在对应的心跳检测记录。步骤s302,在所述应用服务器2内存中存储有所述移动终端客户端的心跳检测记录时,根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新。从上文可知,本实施例将所述心跳检测记录存储于所述应用服务器2内存中,其目的是通过所述心跳检测记录实时记录所述移动终端客户端向所述应用服务器2发送心跳包的信息(例如记录所述移动终端客户端所发心跳包被应用服务器2所接收的接收时间和历史接收次数等)。因此,在所述应用服务器2接收到所述移动终端客户端所发送的心跳包后,若该应用服务器2的内存中存在与所述移动终端客户端对应的所述心跳检测记录,则可以根据所接收的心跳包,对所述心跳检测记录中所记载的信息进行更新。需要说明的是,所述更新可包括,但不仅限于,将所述心跳检测记录中记载的心跳检测时间(即移动终端客户端最近一次向所述应用服务器2发送心跳包,所述应用服务器2接收到所述心跳包的时间)更新为所述应用服务器2当前所接收心跳包的接收时间,或者将所述心跳检测记录中记载的心跳检测次数(移动终端客户端历史向所述应用服务器2发送心跳包的次数)增加一次等。需要补充的是,若所述移动终端客户端是第一次向所述应用服务器2发送所述心跳包,则与该移动终端客户端对应的所述心跳检测记录中所记载的所述心跳检测时间(即该移动终端客户端最近一次向所述应用服务器2发送心跳包,所述应用服务器2接收到所述心跳包的时间)和所述心跳检测次数(即该移动终端客户端历史向所述应用服务器2发送心跳包的次数)均为空。此时,对所述心跳检测记录的更新可以是:直接将所述心跳检测记录中所记载的所述心跳检测时间记录所述应用服务器2当前所接收心跳包的接收时间,以及直接记录所述心跳检测记录中所记载的所述心跳检测次数为一次等。步骤s303,以预设的频率轮询所述应用服务器2内存中所存储的心跳检测记录,确定所述心跳检测记录中是否存在异常心跳检测记录。从上文可知,所述移动终端客户端会定期向所述应用服务器2发送心跳包,来检测两者之间的长连接的状况。而所述应用服务器2则会在接收到由所述移动终端客户端所发送的心跳包后更新存储于其内存中的所述心跳检测记录,且所述心跳检测记录记载有所述移动终端客户端心跳包发送情况的信息。因此,本实施例中,所述应用服务器2可通过编码设定一特定的轮询机制,所述轮询机制用于定期轮询存储于所述应用服务器2内存中的每一条所述心跳检测记录,进而对每一条心跳检测记录中的信息进行核查,核查出所述心跳检测记录中的异常心跳检测记录,最终根据所述异常心跳检测记录来对与之对应的长连接进行管理。这样,可从应用服务器2侧实现对该应用服务器2保持长连接的一个或多个移动终端客户端进行灵活的长连接管理。在一些实施例中,所述异常心跳检测记录可以是指所述心跳检测记录中,所记载的心跳检测时间与当前轮询时间的时间差值超出预设阈值的心跳检测记录。其中,需要说明的是,所述预设阈值优选为与所述心跳检测记录对应的移动终端客户端的心跳包发包周期的3倍的时间值。即,若移动终端客户端5分钟发一次心跳包,则所述预设阈值可设为15分钟。具体而言,可以首先以预设的频率轮询所述应用服务器2内存中所存储的心跳检测记录,然后计算每一条所述心跳检测记录中所记载的心跳检测时间与当前轮询时间的时间差值,进而比较所述时间差值是否超出预设阈值来确定所述心跳检测记录中的异常心跳检测记录。一般地,若所述时间差值超出所述预设阈值,则说明对应的心跳检测记录长时间没有进行过更新,也即对应的移动终端客户端长时间未向所述应用服务器2发送过心跳包,故可以判定对应的心跳检测记录为所述异常心跳检测记录。反之,若所述时间差值未超出所述预设阈值,则说明对应的心跳检测记录长时间在近期进行过更新,也即对应的移动终端客户端近期向所述应用服务器2发送过心跳包,故可以判定对应的心跳检测记录为正常的心跳检测记录。在另一些实施例中,所述异常心跳检测记录还可以是指所述心跳检测记录中,所记载的心跳检测次数在预设轮询周期内均保持不变的的心跳检测记录。其中,需要说明的是,与所述预设轮询周期对应的时间值优选为不小于移动终端客户端心跳包的发包周期的时间值。即,若移动终端客户端的发包周期为5分钟发一次心跳包,且所述轮询周期为2分钟轮询一次,则所述预设轮询周期可以是3个轮询周期。具体而言,可以首先以预设的频率轮询所述应用服务器2内存中所存储的心跳检测记录,然后在所述预设轮询周期内连续对每一条所述心跳检测记录中所记载的心跳检测次数进行统计,进而通过核查所述心跳检测记录中是否存在心跳检测次数在所述预设轮询周期内均保持不变的心跳检测记录来确定所述心跳检测记录中的异常心跳检测记录。一般地,若某一条心跳检测记录中记载的心跳检测次数在所述预设轮询周期内均保持不变,则说明对应的心跳检测记录长时间没有进行过更新,也即对应的移动终端客户端长时间未向所述应用服务器2发送过心跳包,故可以判定对应的心跳检测记录为所述异常心跳检测记录。反之,若某一条心跳检测记录中记载的心跳检测次数在所述预设轮询周期内均发生了变化,则说明对应的心跳检测记录长时间在近期进行过更新,也即对应的移动终端客户端近期向所述应用服务器2发送过心跳包,故可以判定对应的心跳检测记录为正常的心跳检测记录。步骤s304,在所述心跳检测记录中存在异常心跳检测记录时,删除所述异常心跳检测记录,并断开与所述异常心跳检测记录相对应的移动终端客户端和所述应用服务器之间的长连接。从上文可知,当某一条心跳检测记录中记载的心跳检测时间与所述当前轮询时间的时间差值超出所述预设阈值,或者该心跳检测记录中记载的心跳检测次数在预设轮询周期内保持不变时,说明所述心跳检测记录长时间没有进行过更新,与之对应的移动终端客户端长时间未向所述应用服务器2发送过心跳包,一般可以判定与所述心跳检测记录对应的移动终端客户与所述应用服务器2之间的长连接出现的并非短暂性异常。故,本实施例可以直接将删除异常心跳检测记录,并断开与所述异常心跳检测记录相对应的移动终端客户端和所述应用服务器之间的长连接,以释放出该长连接所占用的服务器资源。通过上述步骤s301-304,本发明所提出的心跳检测方法,首先通过将与应用服务器2长连接的移动终端客户端的心跳检测记录保存至内存;然后,在接收到移动终端客户端发送的心跳包时,对内存中存储的心跳检测记录进行更新;接着,在应用服务器侧使用轮询的方式对更新后的心跳检测记录进行查询,仅在移动终端客户端发送心跳包或者应用服务器2接收心跳包严重超时(即心跳检测记录中的心跳检测时间与当前轮询时间的时间差值超出预设阈值,或者心跳检测记录中的心跳检测次数持续在预设轮询周期内保持不变)时,才断开移动终端客户端与应用服务器2之间的长连接。这样,既可以避免现有技术中一检测到应用服务器2未收到心跳包就立刻断开所述长连接的弊端,也可以从应用服务器2侧对于该应用服务器2进行长连接的移动终端客户端进行更灵活地管理。进一步地,基于本发明心跳检测方法的上述第一实施例,提出本发明心跳检测方法的第二实施例。如图6所示,是本发明数据转化方法第二实施例的实施流程示意图。本实施例中,在根据所接收的心跳包对所述心跳检测记录中记载的信息进行更新的步骤之前,所述方法还包括:步骤s401,计算所述心跳包的接收时间与所述心跳检测记录中所记载心跳检测时间之间的时间差。步骤s402,若所述时间差超出预设时间,则直接确定对应的所述心跳检测记录为所述异常心跳检测记录。从上文可知,第一实施例通过在应用服务器2侧建立轮询机制来监测所述应用服务器2与所述移动终端客户端之间的心跳检测,并在移动终端客户端发送心跳包或者应用服务器接收心跳包严重超时(即心跳检测记录中的心跳检测时间与当前轮询时间的时间差值超出预设阈值,或者心跳检测记录中的心跳检测次数持续在预设轮询周期内保持不变)时,判定长连接异常不可用,进而断开移动终端客户端与应用服务器之间的长连接,以节约服务器资源。而本实施例则是通过直接比较相邻两次应用服务器2接收到心跳包的时间来对长连接是否异常进行判断。具体地,当应用服务器2接收到所述移动终端客户端发送的心跳包时,首先查询所述应用服务器2内存中存储的与该移动终端客户端对应的心跳检测记录,从所述心跳检测记录中获取所记载的心跳检测时间(也即所述移动终端客户端最近一次向所述应用服务器2发送心跳包,所述应用服务器2接收到所述心跳包的时间);然后,计算所述心跳包的接收时间与所述心跳检测记录中所记载心跳检测时间之间的时间差;最后,将所述时间差与预设时间进行比较,来判断移动终端客户端与应用服务器之间的长连接的状态。其中,所述预设时间优选为所述移动终端客户端的心跳包发包周期3倍的时间值。一般地,若所述时间差超出所述预设时间,则说明所述应用服务器2连续两次接收到心跳包的时间过长,所述应用服务器2与所述移动终端客户端之间的长连接遗漏较多的心跳包,所述长连接异常不可用。此时,可以判定与所述长连接对应的心跳检测记录为所述异常心跳检测记录。反之,若所述时间差未超出所述预设时间,则说明所述应用服务器2连续两次接收到心跳包的时间正常,所述应用服务器2与所述移动终端客户端之间的长连接并未遗漏过多的心跳包,所述长连接正常可用。此时,可以判定与所述长连接对应的心跳检测记录为正常心跳检测记录。通过上述步骤s401-s402,本发明所提出的心跳检测方法,可以通过直接比较相邻两次应用服务器2接收到心跳包的时间来对长连接是否异常进行判断,进而对异常的长连接进行断开处理,节约服务器资源。进一步地,基于本发明心跳检测方法的上述第一和第二实施例,提出本发明心跳检测方法的第三实施例。如图7所示,是本发明数据转化方法第三实施例的实施流程示意图。本实施例中,在所述接收到移动终端客户端所发送的心跳包的步骤之前,所述方法还包括:步骤s501,在移动终端客户端长连接上所述应用服务器2时,查询所述应用服务器2内存中是否存储有与所述移动终端客户端相关的心跳检测记录;步骤s502,若所述应用服务器2内存中未存储有与所述移动终端客户端相关的心跳检测记录,则在所述应用服务器2内存中新增所述移动终端客户端的心跳检测记录。从前文可知,当移动终端客户端与所述应用服务器2之间的长连接异常不可用,会删除所述应用服务器2内存中对应的心跳检测记录。因此,本实施例中,当所述移动终端客户端与所述应用服务器2建立长连接(包括第一次建立和重新建立)时,若检测到所述应用服务器2内存中没有与所述移动终端客户端相对应的心跳检测记录,则需要在所述应用服务器2内存中新增与所述移动终端客户端对应的心跳检测记录。其中,所述新增的心跳检测记录至少包括,但不仅限于,所述移动终端1的标识、所述长连接的id等信息。通过上述步骤s501-s502,本发明所提出的心跳检测方法,还能够在移动终端客户端与所述应用服务器2建立长连接时,预先检测到应用服务器2内存中是否存储有与移动终端客户端相对应的心跳检测记录,若没有则在该应用服务器2的内存中新增对应的心跳检测记录,用以在后续对所述长连接是否正常可用进行监测的工作提供方便。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
,均同理包括在本发明的专利保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1