手机客户端应用程序心跳包推送方法

—— CN201410557538.2

摘要

本发明涉及应用程序信息推送领域,提供了一种手机客户端应用程序心跳包推送方法,方法包括如下步骤:A、手机客户端与服务器端建立初始连接后,手机客户端应用程序自动获取服务器上增设的短信猫的号码;B、手机客户端应用程序利用运营商特殊短信通道定时发送心跳包短信到对应服务器的短信猫上;C、服务器从短信猫处调用接收心跳包短信息;D、服务器对接收短信息进行解析处理。本发明不占用原有的信令通道,采用短信息发送方式,可以减少应用程序频繁发送心跳包对手机客户端的负担,又避免对移动网络的冲击,减少信令风暴。

权利要求书

1.一种手机客户端应用程序心跳包推送方法,其特征在于:方法包括如下步骤:A、手机客户端与服务器端建立初始连接后,手机客户端应用程序自动获取服务器上增设的短信猫的号码;B、手机客户端应用程序利用运营商特殊短信通道定时发送心跳包短信到对应服务器的短信猫上;C、服务器从短信猫处调用接收心跳包短信息;D、服务器对接收短信息进行解析处理;所述手机客户端应用程序发送的短信内容需要包括手机唯一识别信息的CPU序列号,通过调用函数GETCPUSERIAL()来实现;所述服务器对于手机客户端应用程序限制同时在线手机客户端数目时,对新近接收的短消息提供一种高效处理机制:生成动态的手机客户端在线列表,确认新近接收的短消息是由列表中同一手机客户端上发出时,只需更新接收时间;一旦超过限制的在线数目时,新近接收的短消息的接收时间自动与在线列表中最早的接收时间做差值,一旦超过时间T,即可证明原有最早的接收时间对应的手机客户端已经掉线,将其在在线列表中直接删除,之后直接将这个新近接收的短消息对应的手机客户端添加入在线列表。 2.根据权利要求1所述的手机客户端应用程序心跳包推送方法,其特征在于:所述手机客户端应用程序自动调用服务器内函数GSMSN()来获取服务器上增设的短信猫的号码。 3.根据权利要求1所述的手机客户端应用程序心跳包推送方法,其特征在于:所述手机客户端应用程序通过调用函数GSMSEND(SN,MESSAGE:STRING)来利用运营商的特殊短信通道。

说明书

技术领域

本发明属于应用程序信息推送领域,具体涉及一种手机客户端应用程序心跳包推送方法。

背景技术

我们的系统是C/S结构,存在服务器和客户端。由于网络的不确定性,服务器和客户端的连接并不稳定。如何让服务器能获取到客户端的在线状态呢, 我们采用的是心跳包技术。所谓心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。

网络中的接收和发送数据都是使用SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。如何判断这个套接字是否还可以使用呢, 我们在系统中创建了心跳机制。“心跳”就是定时发送一个自定义的结构体(心跳包或心跳帧),让对方知道自己“在线”。以确保链接的有效性。

客户端通过心跳包向服务器定时发送简单的信息告诉它我还在。代码就是每隔几分钟发送一个固定信息给服务端,如果服务端20秒内没有收到客户端信息则视客户端断开。发包方:是客户端。心跳包之所以叫心跳包是因为:它像心跳一样每隔15秒发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是很小的包,只包含包头的一个空包。这样我们就可以检查到客户端机器断电、网线拔出、防火墙这些意外断线。

心跳包的具体实现是在逻辑层发送空的包来实现的。下一个定时器,在一定时间间隔下发送一个空包给服务器端。服务器如果在一定时间内收不到客户端发送过来的包,那就只有认定说掉线了。如果没有心跳机制,在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果客户端出现什么故障是难以知道的。更要命的是,有的防火墙会自动把一定时间之内没有数据交互的连接给断掉。所以这个时候,我们必须需要心跳包,用于维持长连接,保活。总的来说,心跳包技术主要也就是用于长连接的保活和断线处理。

目前的客户端软件可以在windows上也可以在android或者ios移动设备上运行,在心跳机制下,客户端每隔15秒就要给服务器发送一次心跳包,由于频繁的发包,App将会更加耗电,移动设备的电池续航时间将降低。另外,由于频繁发包,也会占用一定的cpu资源,在有其他大型应用运行时,也更可能出现死机等不良的用户体验。最重要的,当服务器断线或者关机后,客户仍然会继续尝试给服务器发送心跳包,这种情况下发送不成功又持续尝试发送的过程,非常占用cpu资源,用户会明显感觉到系统卡住,动不了。特别在移动网络下,大量的心跳包会对移动运营商的网络产生信令风暴。

发明内容

本发明的目的是提供一种手机客户端应用程序心跳包推送方法,利用运营商网络通过短信息方式向服务器发送。

为实现上述发明目的,本发明采用的技术方案是:方法包括如下步骤:A、手机客户端与服务器端建立初始连接后,手机客户端应用程序自动获取服务器上增设的短信猫的号码;B、手机客户端应用程序利用运营商特殊短信通道定时发送心跳包短信到对应服务器的短信猫上;C、服务器从短信猫处调用接收心跳包短信息;D、服务器对接收短信息进行解析处理。

优选的:所述手机客户端应用程序自动调用服务器内函数GSMSN()来获取服务器上增设的短信猫的号码。

优选的:所述手机客户端应用程序发送的短信内容需要包括手机唯一识别信息的CPU序列号,通过调用函数GETCPUSERIAL()来实现。

优选的:所述手机客户端应用程序通过调用函数:

GSMSEND(SN,MESSAGE:STRING)来利用运营商的特殊短信通道。

优选的:所述服务器对于手机客户端应用程序限制同时在线手机客户端数目时,对新近接收的短消息提供一种高效处理机制:生成动态的手机客户端在线列表,确认新近接收的短消息是由列表中同一手机客户端上发出时,只需更新接收时间;一旦超过限制的在线数目时,新近接收的短消息的接收时间自动与在线列表中最早的接收时间做差值,一旦超过时间T,即可证明原有最早的接收时间对应的手机客户端已经掉线,将其在在线列表中直接删除,之后直接将这个新近接收的短消息对应的手机客户端添加入在线列表。

本发明具有以下有益效果:手机客户端应用程序心跳包推送方法,利用运营商网络通过短信息方式向服务器发送,可以减少应用程序频繁发送心跳包对手机客户端的负担,又避免对移动网络的冲击,减少信令风暴,即便服务器端掉线或者关机,客户端仍然尝试联系服务器端也不会卡住。

附图说明

图1为本发明的心跳包发送流程示意图;

图2为本发明的硬件结构示意图;

图3为本发明的服务器对多个短信息的处理机制流程图。

具体实施方式

如图1-图3所示:

本发明作为一种手机客户端应用程序心跳包发送的改进方法,通过短信息方式向服务器发送心跳包。

方法包括如下步骤:

步骤1:手机客户端与服务器建立初始连接后,手机客户端应用程序需要知道发送短信息的接收端,即对应服务器短信猫的号码:自动调用服务器内函数GSMSN(),将其设置为变量x(x就是短信猫的号码);

步骤2:手机客户端应用程序设置短信息内容与发送。

手机客户端应用程序调用运营商特定短信通道函数GSMSEND(SN,MESSAGE:STRING),设置SN=x,MESSAGE:STRING=GETCPUSERIAL();SN就是短信发送的接收端号码;MESSAGE:STRING就是短信内容,在这里设置的是手机客户端唯一的设别信息:CPU的序列号,通过调用函数GETCPUSERIAL()来实现。

而且因为是将该短信息作为心跳包发送,所以手机客户端应用程序会定时的调用该程序,参数设置不变。

步骤3:服务器从短信猫处调用接收短信息。

服务器增设的短信猫接收到该短信息后,服务器会立刻调用读取该短信息的函数GSMMESSAGE();

步骤4:服务器对多个短信息的解析处理机制。

由于是付费手机客户端应用程序,因此服务器设定限制同时在线的应用程序手机客户端数目为50时,服务器内自定义数组函数Y作为同时在线手机客户端列表,限定组数数目对应的最大为50,每个数组元素定义为:(GSMMESSAGE(),NOW());NOW()为接收读取短信息的当前时间;函数GSMMESSAGE()显示的是手机客户端的识别信息:CPU序列号;且将所有数组元素中时间最小的NOW()数值设置为变量z。

服务器对多个短信息的处理机制如下:

1)新近接收的短信息首先判断是否为手机客户端在线列表中某一个相同的手机客户端发出,如果是,即证明只是新的心跳包发送来了,所以无需新增同时在线手机客户端数目,只需更新相应手机客户端的接收时间即可。

首先对新近接收的短信息设定变量w=(GSMMESSAGE(),NOW()),如果变量w中的GSMMESSAGE()数值有与数组函数Y内原有数组元素中的一个GSMMESSAGE()数值一致时,不用新增数组元素,只需要更新所在数组元素的NOW()数值为变量w的NOW()数值;

2)如果新近接收的短信息确认为新手机客户端发出,那么需要再判断手机客户端在线列表是否已满,如果没有,可以直接加入手机客户端在线列表。

即变量w的GSMMESSAGE()数值与数组函数Y内原有数组元素中的任何一个GSMMESSAGE()数值都不一致时,再判断目前数组函数Y内的数组元素数目是否为50,如果不是,直接将变量w添加为新的数组元素,更新数组函数Y。

3)如果手机客户端在线列表已满,那么需要判断手机客户端在线列表中是否有与服务器已经断开的手机客户端,那么删除掉该手机客户端之后,将新的手机客户端直接添加入在线列表。反之,则不能添加。而判断是否有断开的手机客户端的方法就是查看最新与最早的短信息接收时间之差是否超过了一定的时间值,即可进行判断。

即承接上述2)的要求判断数组函数Y内的数组元素数目若为50时,再将变量w的NOW()数值与变量z的数值相减,如果大于时间T(时间T的大小按照不同客户需求来设定,主要与短信息心跳包的发送时间间隔有关,一般判定时间T刚好等于1个心跳包的发送时间间隔),那么再判断哪一个数组元素的NOW()数值与变量z数值相同,将该数组元素在数组函数Y中删除,使得数组函数Y的数组元素数目小于50,即可将变量w直接添加进数组函数Y中,更新数组函数Y和变量z;反之,数组函数Y与变量z不做更新。

  • 标题:手机客户端应用程序心跳包推送方法
  • 申请人:成都千业软件有限公司
  • 发明人:方言兵,张力鹏,刘捷
  • 申请号:CN201410557538.2
  • 申请日:20141020
  • 公开号:CN104284311B
  • 公开日:20181012
  • 优先权号:CN201410557538A
  • 代理人:刘坤
  • 代理机构:成都坤伦厚朴专利代理事务所(普通合伙)
  • 申请人地址:610000 四川省成都市成华区欣然一街6号1栋1层108号
  • 是否有效:有效
  • 标签:推送,应用程序,客户端,方法,手机