CN104284311B - 手机客户端应用程序心跳包推送方法 - Google Patents
手机客户端应用程序心跳包推送方法 Download PDFInfo
- Publication number
- CN104284311B CN104284311B CN201410557538.2A CN201410557538A CN104284311B CN 104284311 B CN104284311 B CN 104284311B CN 201410557538 A CN201410557538 A CN 201410557538A CN 104284311 B CN104284311 B CN 104284311B
- Authority
- CN
- China
- Prior art keywords
- short message
- cell
- customer terminal
- phone customer
- server
- 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.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
- H04W4/14—Short messaging services, e.g. short message services [SMS] or unstructured supplementary service data [USSD]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
Abstract
本发明涉及应用程序信息推送领域,提供了一种手机客户端应用程序心跳包推送方法,方法包括如下步骤:A、手机客户端与服务器端建立初始连接后,手机客户端应用程序自动获取服务器上增设的短信猫的号码;B、手机客户端应用程序利用运营商特殊短信通道定时发送心跳包短信到对应服务器的短信猫上;C、服务器从短信猫处调用接收心跳包短信息;D、服务器对接收短信息进行解析处理。本发明不占用原有的信令通道,采用短信息发送方式,可以减少应用程序频繁发送心跳包对手机客户端的负担,又避免对移动网络的冲击,减少信令风暴。
Description
技术领域
本发明属于应用程序信息推送领域,具体涉及一种手机客户端应用程序心跳包推送方法。
背景技术
我们的系统是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不做更新。
Claims (3)
1.一种手机客户端应用程序心跳包推送方法,其特征在于:方法包括如下步骤:A、手机客户端与服务器端建立初始连接后,手机客户端应用程序自动获取服务器上增设的短信猫的号码;B、手机客户端应用程序利用运营商特殊短信通道定时发送心跳包短信到对应服务器的短信猫上;C、服务器从短信猫处调用接收心跳包短信息;D、服务器对接收短信息进行解析处理;
所述手机客户端应用程序发送的短信内容需要包括手机唯一识别信息的CPU序列号,通过调用函数GETCPUSERIAL()来实现;
所述服务器对于手机客户端应用程序限制同时在线手机客户端数目时,对新近接收的短消息提供一种高效处理机制:生成动态的手机客户端在线列表,确认新近接收的短消息是由列表中同一手机客户端上发出时,只需更新接收时间;一旦超过限制的在线数目时,新近接收的短消息的接收时间自动与在线列表中最早的接收时间做差值,一旦超过时间T,即可证明原有最早的接收时间对应的手机客户端已经掉线,将其在在线列表中直接删除,之后直接将这个新近接收的短消息对应的手机客户端添加入在线列表。
2.根据权利要求1所述的手机客户端应用程序心跳包推送方法,其特征在于:所述手机客户端应用程序自动调用服务器内函数GSMSN()来获取服务器上增设的短信猫的号码。
3.根据权利要求1所述的手机客户端应用程序心跳包推送方法,其特征在于:所述手机客户端应用程序通过调用函数GSMSEND(SN,MESSAGE:STRING)来利用运营商的特殊短信通道。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410557538.2A CN104284311B (zh) | 2014-10-20 | 2014-10-20 | 手机客户端应用程序心跳包推送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410557538.2A CN104284311B (zh) | 2014-10-20 | 2014-10-20 | 手机客户端应用程序心跳包推送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104284311A CN104284311A (zh) | 2015-01-14 |
CN104284311B true CN104284311B (zh) | 2018-10-12 |
Family
ID=52258693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410557538.2A Expired - Fee Related CN104284311B (zh) | 2014-10-20 | 2014-10-20 | 手机客户端应用程序心跳包推送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104284311B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407382A (zh) * | 2016-09-13 | 2017-02-15 | 广州爱电牛互联网科技有限公司 | 一种基于app与新能源汽车充电桩的交互系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101699912A (zh) * | 2007-07-03 | 2010-04-28 | 卢苇 | 连接服务器和移动终端的传输方法 |
CN103297934A (zh) * | 2013-03-04 | 2013-09-11 | 东莞宇龙通信科技有限公司 | 信息推送方法、系统和移动终端 |
CN103686641A (zh) * | 2013-12-23 | 2014-03-26 | 山东康威通信技术股份有限公司 | 一种电力监控领域短信收发的方法 |
CN104093123A (zh) * | 2013-06-09 | 2014-10-08 | 腾讯科技(深圳)有限公司 | 应用程序的信息推送方法、装置和系统、移动终端 |
-
2014
- 2014-10-20 CN CN201410557538.2A patent/CN104284311B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101699912A (zh) * | 2007-07-03 | 2010-04-28 | 卢苇 | 连接服务器和移动终端的传输方法 |
CN103297934A (zh) * | 2013-03-04 | 2013-09-11 | 东莞宇龙通信科技有限公司 | 信息推送方法、系统和移动终端 |
CN104093123A (zh) * | 2013-06-09 | 2014-10-08 | 腾讯科技(深圳)有限公司 | 应用程序的信息推送方法、装置和系统、移动终端 |
CN103686641A (zh) * | 2013-12-23 | 2014-03-26 | 山东康威通信技术股份有限公司 | 一种电力监控领域短信收发的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104284311A (zh) | 2015-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9568989B2 (en) | Method for acting as service agent, modem, and terminal by establishing a heartbeat connection with an application server | |
US10154106B2 (en) | Method for sending heartbeat message and mobile terminal | |
CN109040295B (zh) | 异常断线的确定方法及装置、终端及存储介质 | |
CN102638417A (zh) | 信息的通信方法、装置及系统 | |
CN103516588A (zh) | 一种客户端进行后台处理的方法和系统 | |
CN103166773A (zh) | 监测服务器运行状态的方法与系统 | |
CN101977358A (zh) | 一种数据短信的传输方法、装置及设备 | |
CN103516766B (zh) | 一种客户端与应用服务器间进行通信的方法和系统 | |
CN110809262B (zh) | 一种基于coap协议的物联网设备运维管理方法 | |
KR101945361B1 (ko) | 푸쉬 서버, 어플리케이션 서버 및 단말 | |
CN105978796A (zh) | 基于不稳定移动网络的消息通信方法及系统 | |
CN104284311B (zh) | 手机客户端应用程序心跳包推送方法 | |
CN107786607B (zh) | 一种消息重传方法、消息重传服务器及用户设备 | |
US20170127472A1 (en) | Method and wireless device for controlling disconnection of a wireless device in a wi-fi direct group of a wireless network | |
CN103402229A (zh) | 一种数据下载方法及系统 | |
JP5176713B2 (ja) | セッション管理装置、通信システム、およびセッション整理方法 | |
KR101007408B1 (ko) | 데이터 공유 기반 데이터 전송 방법 및 시스템 | |
US11425632B2 (en) | Mechanism to provide updates to NB-IoT devices | |
CN110650259B (zh) | 呼叫请求的响应方法、装置、服务器、终端及存储介质 | |
CN105227428A (zh) | 未读消息的处理方法、装置及系统 | |
CN110971669B (zh) | 消息通知方法、装置、服务器、电子设备及可读存储介质 | |
JP2014146876A (ja) | メッセージ配信システムおよびメッセージ配信方法 | |
CN109327398B (zh) | 一种防止丢包的方法及装置 | |
CN108989467B (zh) | 集中式寻址方法 | |
CN114143729B (zh) | 用于与IoT设备进行数据收发的装置、方法及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181012 Termination date: 20211020 |