一种客户端在线状态判定方法及其系统的制作方法

文档序号:7851338阅读:170来源:国知局
专利名称:一种客户端在线状态判定方法及其系统的制作方法
技术领域
本发明涉及即时通信技术领域,尤其涉及一种客户端在线状态判定方法及其系统。
背景技术
在即时通信领域中,要实现及时消息的传送功能,必须要保证服务器和客户端之间的连接有效,所以客户端在线状态的判定尤为重要。现在技术都是采用心跳包和断线重连机制来实现,即通过从客户端发出心跳包,服务 器响应来判断客户端是否在线。但是,这种方案下,客户端需要启动计时器,每隔3到5分钟,就需要有一个心跳包发送到服务器,并且需要等待服务器的返回,导致网络流量和电量消耗增加,使得客户端,特别是移动网络设备的待机时间过短,上网资费过高,给用户带来不便。

发明内容
为了即时通信系统的服务器和客户端之间的连接有效,降低客户端电量消耗和网络流量消耗,避免资源的浪费,本发明提供了一种客户端在线状态判定方法及其系统。所述技术方案如下一种客户端在线状态判定方法,所述方法包括SI 服务器对预设响应时间和预设心跳时间进行初始化,开启计时器;S2:服务器等到计时器计时达到预设心跳时间向客户端发送心跳包,将计时器清零并重新计时;S3:如果服务器在预设响应时间之内收到客户端的返回心跳确认包,将计时器清零并重新计时,并返回步骤S2,否则判定客户端处于离线状态。进一步地,步骤SI中服务器对预设响应时间和预设心跳时间进行初始化,方法为将预设响应时间和预设心跳时间设定为服务器端系统管理员所设定的时间。进一步地,所述步骤S2中如果服务上收到该客户端的上行消息包,则将计时器清零并重新计时,计时器继续计时直到超时并再次执行本步骤。进一步地,其中所述步骤SI开启计时器之后还包括步骤Sll :服务器创建在线客户端列表,对在线客户端列表进行初始化;所述步骤S2具体包括S21:将计时器的时间与预设心跳时间进行比较,如果超时,服务器向该在线客户端发送心跳包,将计时器清零并重新计时,否则继续计时;所述步骤S3具体包括S31 :如果服务器在计时器计时达到预设响应时间之内收到任何客户端的心跳确认包,则将该客户端记载到在线客户端列表中,当服务器在计时器计时达到预设响应时间,将计时器清零并重新计时,返回步骤S21。进一步地,所述步骤Sll对在线客户端列表进行初始化具体为将所有的在线客户端记载到在线客户端列表中。进一步地,所述步骤S21之前,当有客户端申请连接到服务器或有客户端网络状态发生改变申请重连接时,将该客户端记载到所述在线客户端列表中。
一种客户端在线状态判定系统,包括服务器和与其进行数据交互的至少一个客户端;所述服务器,用于对预设响应时间和预设心跳时间进行初始化,开启计时器,向客户端发送心跳包和消息包,接收客户端发送的返回心跳确认包和消息包,判定客户端的在线状态;所述客户端,用于接收服务器发送的心跳包和消息包,向服务器发送心跳确认包和消息包。进一步地,所述服务器包括收发模块、计时器、判定模块;收发模块与计时器和判定模块相连,用于向客户端发送心跳包和消息包,接收客户端发送的心跳确认包和消息包;计时器,与收发模块和判定模块相连,用于计时;判定模块,与收发模块和计时器相连,用于判定客户端的在线状态。当计时达到预设心跳时间,服务器向所述客户端发送心跳包,如果服务器在所述预设响应时间之内收到所述客户端的所述返回心跳确认包,则判定所述客户端处于在线状态,否则判定所述客户端处于离线状态。进一步地,所述客户端包括收发模块,用于接收服务器发送的心跳包和消息包,发送心跳确认包和消息包到服务器。进一步地,所述客户端还包括自检模块,与收发模块相连,用于检查客户端自身的网络连接状态,当客户端的网络状态改变时,自检模块通知服务器并向服务器发送连接申请。本发明实施例提供的技术方案的有益效果是考虑了客户端电量的消耗和网络流量的消耗,通过服务器的心跳机制和客户端的主动检测网络状态的自检模块,实现客户端在线状态的判定。服务器端主要是消耗了一些内存,来存储计时器的时间,对服务器的性能影响不大;客户端则不需要启动定时器,不用每隔一段时间就发送一个心跳包发送到服务器,仅需要对服务器的心跳包进行响应和对自身网络状态进行检测。


图I是本发明的系统结构框图;图2是本发明客户端在线状态判定方法流程图;图3是实施例一客户端在线状态判定方法流程图;图4是实施例二客户端在线状态判定方法流程图;图5是实施例三客户端在线状态判定方法流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。 本发明提供了一种客户端在线状态判定系统,如图I所示,该系统包括服务器100及与其进行数据交互的至少一个客户端,如客户端200,客户端300和客户端N。其中,各客户端,如客户端200、客户端300和客户端N可运行在多种终端通信设备上,例如个人计算机,个人数字助理(Personal Digital Assistant,简称“PDA”),移动通f目终纟而设备,如3G手机、GSM手机、CDMA手机、小灵通、各种网页客户纟而等。客户200,客户端300以及客户端N的收发模块和自检模块完全相同。下面以服务器100和客户端200为例详细说明该即时通信系统的内部结构。服务器100包括收发模块101、计时器102和判定模块103,其中收发模块101,与计时器102和判定模块103相连,用于当客户端200上线、离线、网络切换时向客户端200的好友客户端发送消息,并将客户端200的好友客户端的在线情况发送给客户端200 ;用于当客户端200的好友客户端在线状态发生变化时发送相应消息通知客户端200,更新客户端200的好友在线信息;用于当及客户端200与其它好友客户端进行通信时进行消息的中转或离线消息的接收、存储和转发等;还用于向客户端200发送心跳包,接收客户端200的心跳确认包以即时判定客户端200的在线状态等。 计时器102,与收发模块101和判定模块103相连,用于计算时间间隔,进而判定服务器100何时向客户端200发送心跳包以及服务器100在多长时间之内等待客户端200发送的返回心跳确认包;判定模块103,与收发模块101和计时器102相连,用于判断在计时器102计时达到预设响应时间之内,是否收到客户端的返回心跳确认包,如果未收到,则判定该客户端处于离线状态;如果收到,则说明该客户端当前在线,将计时器清零并进行下一轮回的判断。判定模块103,与收发模块101和计时器102相连,每个客户端对应一个计时器,用于判定客户端的在线状态。当计时器102计时达到预设心跳时间,服务器100向客户端102发送心跳包,如果服务器100在预设响应时间之内收到客户端102的心跳确认包,则判定该客户端处于在线状态,否则判定所述客户端处于离线状态。客户端200包括收发模块201和自检模块202,其中收发模块201,用于接收服务器100的收发模块101发送的消息包和返回心跳确认包,以及发送消息包和返回心跳确认包到服务器100的收发模块101 ;自检模块202,用于检查客户端自身的网络连接状态,与收发模块相连。当客户端200的网络状态改变时,自检模块会检测到网络切换,并尝试重新去连接服务器100,向服务器100的收发模块101发送连接申请消息,如果成功,表明网络切换成功,服务器100的收发模块101会发送相应消息通知所有应用程序。上述消息包可包括用户消息或系统消息,心跳包和返回心跳确认包可以是各客户端与服务器100事先定义好的固定消息或命令字。本系统提供的客户端在线状态判定系统,改变了现有技术中客户端发送心跳包,服务器响应的模式,考虑了客户端的电量消耗和流量消耗,通过服务器发送心跳包,客户端响应,来保持客户端的永久在线。本实施例中,客户端则不需要启动计时器,不用每隔一段时间就发送一个心跳包发送到服务器,仅需要对服务器的心跳包进行响应和对自身网络状态进行检测,明显地降低了客户端的电量的消耗和网络流量的消耗。实施例一服务器开启一个计时器和一个在线客户端列表,将当前在线的客户端记载下来,服务器到达预设时间向所有的该列表中的客户端群发心跳包,然后将在线客户端列表清空并将一定预设时间之内收到其返回心跳确认包的客户端(即在线客户端)加载进该列表中,并将期间申请连接成功或网络切换成功的客户端也记载在该列表中,将该列表中的客户端作为下一次群发心跳包的对象。下面将结合图3对本方法作进一步地详细描述该方法的流程。S301 :服务器开启计时器、创建在线客户端列表;S302:计时器清零;S303:计时器计时;S304:判断计时是否达到预设心跳时间,若是,进入步骤S305,否则返回步骤S303 ;S305:向在线客户端列表中记载的每个客户端发送心跳包; S306:计时器清零;S307:清空在线客户端列表;S308:计时器计时;S309:判断计时器计时是否达到预设响应时间,若是,返回步骤S302,否则进入S310 ;S310:收到任意客户端的返回心跳确认包;S311:将该客户端记载到在线客户端列表中,并返回步骤S308 ;S312:在整个过程中如果有客户端申请连接或重连接服务器并成功,返回步骤S311。其中,S301中在线客户端列表可以用数组、队列或类对象表示。如果服务器中原本就有对系统中当前在线客户端的记载,则可直接使用,不需要重新记录。本实施例中,对服务器来说,仅需要开启一个计时器,就能决定何时对所有的在线客户端发送心跳包,仅仅是多了一些向在线客户列表中记载的客户端发送心跳包的工作,并且消耗了一些内存来存储计时器时间和记载在线的客户端信息,性能影响不大;而每个客户端仅需要对收到的客户端的心跳包进行确认响应并对自身的网络状态进行监控,避免了现有技术中每个客户端都需要开启一个线程来定时对服务器发送心跳包的工作,极大了降低了对其在线状态判定的工作量。实施例二本实施例提供了一种对客户端在线状态的判定方法,该方法是服务器对每个在线客户端开启一个计时器,计时达到预设心跳时间则向该客户端发送心跳包,计时器重新计时,查看服务器在预设响应时间之内是否收到该客户端的返回心跳确认包,据此判断该客户端是否在线。下面将结合图4对本方法作进一步地详细描述。S401:服务器开启计时器;S402:计时器清零;S403:计时器计时;S404:判断计时是否达到预设心跳时间,是则进入S406,否则返回步骤S403 ;S406:服务器对客户端发送心跳包;S407:计时器清零;S408:计时器计时;S409:判断计时是否达到预设响就时间,是则进入S411,否则进入S410 ;
S410:判断服务器是否收到客户端返回的心跳确认包,是则返回步骤S402,否则返回步骤S408 ;S411:判定客户端处于离线状态、关闭计时器。其中,S404中的预设心跳时间和S409中的预设响应时间均可设置,并可设置为同样的时间。本实施例方案为方法为服务器为每个在线客户端开启一个计时器,它和实施例一不同点在于服务器开启计时器的数量由一变为在线客户端的总数,在客户端数量很少,客户端在线状态又比较稳定的情况下增加计时器的数量而免除了对在线客户端列表进行管理。因此在客户端数量较小并且客户端在线状态比较稳定的情况下具有一定的使用优势。
实施例三本实施例提供了一种对客户端在线状态的判定方法,具体方法如图5所示,S501:服务器开启计时器;S502:计时器清零;S403:计时器计时;S5044:判断计时是否达到预设心跳时间,是则进入步S506,否则进入S505 ;S505:判定服务器上是否有该客户端的消息包上行,是则返回步骤S502,否则返回步骤S503 ;S506:服务器对客户端发送心跳包;S507:计时器清零;S508:计时器计时;S509:判断计时是否达到预设响应时间,是则进入S511,否则进入S510 ;S510:判断服务器是否收到客户端返回的心跳确认包,是则返回步骤S502,否则返回步骤S508 ;S511:判定客户端处于离线状态、关闭计时器。与实施例二比较,本实施例特点在于当客户端收到消息包时计时清零并重新开始计时。在客户端与服务器的通信过程中,如果客户端正在向服务器传送数据,则占用着客户端与服务器的一部分硬件资源,如果所述客户端为移动网络终端,当其与服务器交互时,进行频繁的心跳包和心跳确认包的发送和接收容易出现网络或移动网络的不稳定,甚至造成心跳包及心跳确认包丢失,使得通信通道正常的情况下(即正在接收和发送消息包时),客户端判定客户端处于离线状态而强拍其重新登陆,影响了用户体验。因此,本实施例实现当计时器计时过程中客户端有消息包上行则将计时器的计时清零重新计时,减少心跳包和心跳确认包的发送和接收,在客户端省电和节流量的同时,使网络更加稳定,使用户体验得到进一步地提升。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种客户端在线状态判定方法,其特征在于,所述方法包括 Si服务器对预设响应时间和预设心跳时间进行初始化,开启计时器; S2:服务器等到计时器计时达到预设心跳时间向客户端发送心跳包,将所述计时器清零并重新计时; S3:如果服务器在预设响应时间之内收到所述客户端的返回心跳确认包,将计时器清零并重新计时,并返回步骤S2,否则判定该客户端处于离线状态。
2.如权利要求I所述的客户端在线状态判定方法,其特征在于,步骤SI中服务器对预设响应时间和预设心跳时间进行初始化,方法为将预设响应时间和预设心跳时间设定为服务器端系统管理员所设定的时间。
3.如权利要求I所述的客户端在线状态判定方法,其特征在于,其中步骤S2还包括如果服务上有客户端的消息包上行则将该计时器清零并重新计时。
4.如权利要求I或2所述的客户端在线状态判定方法,其特征在于, 其中所述步骤SI开启计时器之后还包括步骤Sll :服务器创建在线客户端列表,对所有在线客户端进行初始化; 步骤S2具体包括S21:对于在线客户端,将该客户端计时器的时间与服务器预设心跳时间进行比较,如果超时,服务器向该在线客户端心跳包,重新计时并等待心跳包的返回结果。
所述步骤S3具体包括S31 :如果服务器在计时器计时达到预设响应时间之内收到该客户端的返回心跳确认包,将客户端计时器清零并重新计时,返回步骤S21。
5.如权利要求4所述的客户端在线状态判定方法,其特征在于,步骤SII对所有在线客户端进行初始化具体为将所有客户端记载到在线客户端列表中。
6.如权利要求4所述的客户端在线状态判定方法,其特征在于,在步骤S21之前,当有客户端申请连接到服务器或有客户端网络状态发生改变申请重连接时,将该客户端更新到在线客户端列表中。
7.一种客户端在线状态判定系统,其特征在于,包括服务器和与其进行数据交互的至少一个客户端; 所述服务器,用于对预设响应时间和预设心跳时间进行初始化,开启计时器,向在线客户端发送心跳包和消息包,接收客户端发送的返回心跳确认包和消息包,判定客户端的在线状态; 所述客户端,用于接收服务器发送的心跳包和消息包,向服务器发送心跳确认包和消息包。
8.如权利要求7所述的客户端在线状态判定系统,其特征在于,服务器包括收发模块、计时器、判定模块; 所述收发模块,与计时器和判定模块相连,用于向客户端发送心跳包和消息包,接收客户端发送的心跳确认包和消息包; 所述计时器,与收发模块和判定模块相连,用于计时; 所述判定模块,与收发模块和计时器相连,用于判定所述客户端的在线状态。当计时达到预设心跳时间,服务器向客户端发送心跳包,如果服务器在预设响应时间之内收到客户端的心跳确认包,则判定客户端处于在线状态,否则判定客户端处于离线状态。
9.如权利要求7或8所述的客户端在线状态判定系统,其特征在于,客户端包括收发模±夹,用于接收服务器发送的心跳包和消息包,发送心跳确认包和消息包到服务器。
10.如权利要求9所述的客户端在线状态判定系统,其特征在于,客户端还包括自检模块,与收发模块相连,用于检查客户端自身的网络连接状态,当客户端的网络状态改变时,自检模块通知服务器并向服务器发送连接申请。
全文摘要
本发明公开了一种客户端在线状态判定方法及其系统,涉及即时通信技术领域。系统包括服务器和与其进行数据交互的至少一个客户端;所述服务器,用于对预设响应时间和预设心跳时间进行初始化,开启计时器,向所述客户端发送心跳包和消息包,接收所述客户端发送的返回心跳确认包和消息包,判定所述客户端的在线状态;所述客户端,用于接收所述服务器发送的所述心跳包和消息包,向所述服务器发送所述返回心跳确认包和消息包。本发明考虑了客户端电量的消耗和网络流量的消耗,通过服务器的心跳机制和客户端的主动检测网络状态的自检机制,实现客户端在线状态的判定,将极大地降低客户端电量消耗和网络流量的消耗,提升客户端用户的使用体验。
文档编号H04L12/58GK102647314SQ20121015124
公开日2012年8月22日 申请日期2012年5月16日 优先权日2012年5月16日
发明者周聪伟 申请人:深圳市乐唯科技开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1