即时通信系统、客户端、服务器及判定在线状态的方法

文档序号:7946288阅读:297来源:国知局
专利名称:即时通信系统、客户端、服务器及判定在线状态的方法
技术领域
本发明涉及即时通信4支术领域,更具体地说,涉及一种即时通信系统、 客户端、服务器及判定客户端在线状态的方法。
背景技术
网络即时通信工具(InstantMessenger,简称"IM")是一种两人或多人 使用网络进行即时的文字信息、档案、语音及视频交流的终端服务,现已成 为了大多数网民使用的沟通工具。随着即时通信工具功能的强大,其稳定性 也变得十分重要,影响稳定性最突出的就是用户掉线问题,因此需要准确判 定用户的在线状态。
目前,为保持与服务器的通信正常,即时通信客户端会定时发送心跳包 到服务器,服务器接收到心跳包则发送心跳确认包至客户端。当服务器在预 设时间内收到了客户端发送的心跳包,则判定客户端处于在线状态,否则判 定客户端处于离线状态;当客户端在预设时间内收到了服务器返回的心跳确 认包,则也判定客户端处于在线状态,否则判定客户端处于离线状态。
然而,在客户端与服务器的通信过程中,特别是移动终端设备上使用即 时通信工具时,由于网络/移动网络的不稳定,容易造成心跳包及心跳确认包 丢失,使得通信通道正常的情况下(即正常接收和发送消息包时),会判定 客户端处于离线状态而强迫其重新登陆,影响了用户的体验。因此,现有的 在线状态判定方法准确性不高。另外,在移动通信终端设备(如手机)上使 用即时通信工具时,由于心跳包定时由客户端发送到服务器,会增加网络流 量;且由于数据包(包括心跳包、消息包等)的收发操作比较耗电,按固定 频率发送心跳包会增加移动终端设备的耗电量,从而降低了使用时间。

发明内容
基于此,有必要提供一种能提高判定在线状态的准确性的即时通信客户端。
此外,还有必要提供一种能提高判定在线状态的准确性的即时通信服务器。
另外,还有必要提供一种能提高判定在线状态的准确性的判定即时通信
客户端在线状态的方法。
另外,还有必要提供一种能提高判定在线状态的准确性的即时通信系统。 所述即时通信客户端与服务器进行数据交互,用于接收到服务器发送的
消息包则计时清零并开始计时,当计时到第 一预设时间则发送心跳包至服务
器,以及判断在发送心跳包后的第二预设时间内是否收到服务器返回的心跳
确认包,如果未收到,则判定客户端处于离线状态。
该客户端可包括收发模块,用于发送心跳包至服务器,以及接收服务 器发送的消息包及返回的心跳确认包;计时器,与收发模块相连,用于当收 发模块收到消息包时计时清零并开始计时,当计时到第一预设时间则通知收 发模块发送心跳包至服务器;判定模块,与计时器相连,用于判断在收发模 块发送心跳包后的第二预设时间内是否收到服务器返回的心跳确认包,如果 未收到,则判定客户端处于离线状态。
判定模块还可用于若客户端收到消息包或发送心跳包后的第二预设时间 内收到服务器返回的心跳确认包,则判定客户端处于在线状态。
所述判定即时通信客户端在线状态的方法包括当所述客户端收到消息 包时计时清零并开始计时,当计时到第一预设时间则发送心跳包至服务器; 判断是否在发送心跳包后的第二预设时间内收到服务器返回的心跳确认包, 如果未收到,则判定客户端处于离线状态。
该方法还可包括如果所述客户端收到消息包或在发送心跳包的第二预 设时间内收到服务器返回的心跳确认包,则判定所述客户端处于在线状态。
该方法还可包括在收到服务器返回的心跳确i^包时计时清零并开始计时。
另外,该方法还可包括设定第一预设时间和第二预设时间。
所述即时通信服务器与客户端进行数据交互,用于接收到客户端发送的 消息包则计时清零并开始计时,判断当计时在第三预设时间内是否收到客户 端发送的心跳包,如果未收到,则判定客户端处于离线状态。
该服务器还可包括收发模块,用于接收客户端发送的消息包及心跳包; 计时器,与收发模块相连,用于当收发模块收到消息包时计时清零并开始计 时;判定模块,与计时器相连,用于判断在第三预设时间内收发模块是否收 到客户端发送的心跳包,如果未收到,则所述客户端处于离线状态。
该收发冲莫块还可用于收到客户端发送的心跳包后发送心跳确认包至客户端。
所述即时通信系统包括服务器及与其进行数据交互的至少 一个客户端, 该客户端用于接收到服务器发送的消息包则计时清零并开始计时,当计时到 第 一预设时间则发送心跳包至服务器,以及判断在发送心跳包后的第二预设 时间内是否收到服务器返回的心跳确认包,如果未收到,则判定客户端处于 离线状态。
该服务器可用于接收到客户端发送的消息包则计时清零并开始计时,判 断当计时在第三预设时间内是否收到客户端发送的心跳包,如果未收到,则 判定客户端处于离线状态。
上述即时通信系统、客户端、服务器及判定即时通信客户端在线状态的 方法中,客户端收到消息包则计时清零并开始计时,在计时到第一预设时间 则发送心跳包到服务器,以及在第二预设时间内未收到月良务器返回的心跳确 认包则判定客户端处于离线状态,而服务器在收到消息包后的第三预设时间 内未收到客户端发送的心跳包,则也判定客户端处于离线状态。由于客户端 在未收到消息包的条件下才发送心跳包至服务器,减少了心跳包的收发操作, 提高了判定在线状态的准确性。


图l是一个实施例中即时通信系统的示意图2是一个实施例中即时通信客户端的结构示意图3是一个实施例中判定即时通信客户端在线状态的方法流程图4是一个实施例中客户端判定在线状态的方法流程图5是一个实施例中即时通信服务器的结构示意图6是一个实施例中服务器判定在线状态的方法流程图。
具体实施例方式
图1示出了 一个实施例中的即时通信系统,该系统包括服务器IOO及与其 进行数据交互的多个客户端(客户端200、客户端300......客户端N)。其中
各客户端(客户端200、客户端300……客户端N)可运行在多种终端通信 设备上,例如个人计算机(Personal Computer,简称"PC")、个人数字助 理(Personal Digital Assistant,简称"PDA")、移动通信终端设备(3G手机、 GSM手机、CDMA手机、小灵通等)、各种网页客户端(Web Client)等。
各客户端接收到服务器1 OO发送的消息包则计时清零并开始计时,当计时 到第 一预设时间则发送心跳包到服务器100,判断在发送心跳包后的第二预设 时间内是否收到服务器100返回的心跳确认包,如果未收到,则判定客户端处 于离线状态。而服务器100也接收各客户端发送的消息包,在接收到消息包则 计时清零并开始计时,判断在第三预设时间内是否收到客户端发送的心跳包,
如果未收到,则判定客户端处于离线状态。
上述消息包可包括用户消息或系统消息,心跳包和心跳确认包可以是各 客户端与服务器100事先定义好的固定消息或命令字。
各客户端收到消息包则表明其处于正常通信状态,则计时清零并重新开 始计时,在计时到第 一预设时间都没有收到消息包则发送心跳包到服务器 100,相对于现有的按照固定频率发送心跳包,则能减少心跳包的收发操作,同理,也能减少心跳确认包的收发操作,从而提高了判定的准确性。而对于 使用在移动通信终端设备上的即时通信工具,心跳包及心跳确认包收发操作 的减少,也能有效减少网络流量及耗电量。
图2示出了一个实施例中的即时通信客户端200,其它客户端300......客户
端N的内部结构应与客户端200相同。客户端200包括收发才莫块201、计时器202 和判定模块203,其中
收发模块201用于发送心跳包和/或消息包至服务器100,以及接收服务器 IOO发送的消息包及返回的心跳确认包;计时器202与收发模块201相连,用于 当收发模块201收到消息包时计时清零并开始计时,当计时到第一预设时间则 通知收发模块201发送心跳包至服务器100;判定模块203与计时器202相连, 用于判断在发送心跳包后的第二预设时间内是否收到服务器IOO返回的心跳 确认包,如果未收到,则判定客户端200处于离线状态,如果收到,判定客户 端200处于在线状态。在一个实施例中,当判定到客户端200处于离线状态时, 则通知客户端200重连服务器100。
图3示出了一个实施例中判定即时通信客户端在线状态的方法流程,具体 过程如下
在步骤S301中,当客户端200收到消息包时计时清零并开始计时,当计时 到第 一预设时间则发送心跳包至服务器100。
在步骤S302中,客户端200判断是否在发送心跳包后的第二预设时间内收 到服务器100返回的心跳包,如果未收到,则判定客户端200处于离线状态。
图4示出了 一个实施例中客户端200判定其在线状态的方法流程,具体过 程如下
在执行下述步骤之前,可事先设定第一预设时间和第二预设时间。 在步骤S401中,计时器202清零。在步骤S402中,计时器202开始计时。
在步骤S403中,判断客户端200是否接收到消息包,若是,则返回步骤 S401,否则,进入步骤S404。该消息包包括服务器100发送的用户消息和系统 消息。客户端200收到消息包,则表明其处于正常通信状态,计时器202即可 清零,即客户端200在没有收到消息包的情况下才继续计时。
在步骤S404中,判断计时器202计时是否达到第一预_没时间,若是,则进 入步骤S405,否则,返回步骤S402。在一个实施例中,计时器202计时的过程 中客户端200没有收到消息包,则计时器202继续计时直到达到第 一预设时间。
在步骤S405中,客户端200发送心跳包至服务器100。在一个实施例中,
在步骤S406中,判断客户端200在发送心跳包的第二预设时间内是否收到 服务器100返回的心跳确认包,若是,则进入步骤S407,否则,进入步骤S408。 在一个实施例中,客户端200在发送心跳包的第二预设时间内收到服务器IOO 返回的心跳包,则表明客户端200与服务器100正常通信,客户端200处于在线 状态。
在步骤S407中,判定客户端200处于离线状态。此时,可通知客户端200 重连服务器IOO。
图5示出了一个实施例中的服务器100,该服务器100包括收发模块101、 计时器102和判定模块103,其中
收发模块101用于接收客户端200发送的消息包及心跳包;计时器102与收 发模块101相连,用于当收发模块101收到消息包时计时清零并开始计时;判 定模块103与计时器102相连,用于判断计时在第三预设时间内收发模块101是 否收到客户端200发送的心跳包,如果未收到,则判定客户端200处于离线状 态。在一个实施例中,当判定到客户端200处于离线状态时,可更新客户端200 的状态信息。
10图6示出了一个实施例中服务器100判定即时通信客户端200在线状态的 方法流程,具体过程如下
在执行下述步骤之前,可事先设定第三预设时间。 在步骤S601中,计时器102清零。 在步骤S602中,计时器103开始计时。
在步骤S603中,判断服务器100是否收到消息包,若是,则返回步骤S601, 否则,进入步骤S604。在一个实施例中,服务器100收到客户端200发送来的 消息包,则表明客户端200与服务器100正常通信,客户端200处于在线状态, 则计时器102清零而无需继续计时。
在步骤S604中,判断服务器100是否在第三预设时间内收到客户端200发 送来的心跳包,若是,则返回步骤S601,否则,进入步骤S605。在一个实施 例中,服务器100未收到客户端200发送来的消息包,则计时器102继续计时, 在计时器102计时到第三预设时间内,服务器100收到客户端200发送来的心跳 包,则表明客户端200与服务器100仍正常通信,客户端200处于在线状态,则 计时器102清零重新计时。
在步骤S605中,判定客户端200处于离线状态。此时,服务器100可更新 客户端200的状态信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本 发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本 发明的保护范围之内。
权利要求
1、一种即时通信客户端,所述客户端与服务器进行数据交互,其特征在于,所述客户端用于接收到所述服务器发送的消息包则计时清零并开始计时,当计时到第一预设时间则发送心跳包至所述服务器,以及判断在发送心跳包后的第二预设时间内是否收到所述服务器返回的心跳确认包,如果未收到,则判定所述客户端处于离线状态。
2、 根据权利要求l所述的即时通信客户端,其特征在于,所述客户端包括收发模块,用于发送心跳包至服务器,以及接收服务器发送的消息包及 返回的心跳确i^包;计时器,与所述收发模块相连,用于当所述收发模块收到消息包时计时 清零并开始计时,当计时到第 一预设时间则通知所述收发模块发送心跳包至 服务器;判定模块,与所述计时器相连,用于判断在所述收发模块发送心跳包后 的第二预设时间内是否收到所述服务器返回的心跳确认包,如果未收到,则 判定所述客户端处于离线状态。
3、 根据权利要求2所述的即时通信客户端,其特征在于,所述判定模块 还用于若所述客户端收到消息包或发送心跳包后的第二预设时间内收到所述 服务器返回的心跳确认包,则判定所述客户端处于在线状态。
4、 一种判定即时通信客户端在线状态的方法,其特征在于,所述方法包括..当所述客户端收到消息包时计时清零并开始计时,当计时到第一预设时 间则发送心跳包至服务器;判断是否在发送心跳包后的第二预设时间内收到所述服务器返回的心跳 确认包,如果未收到,则判定所述客户端处于离线状态。
5、 根据权利要求4所述的判定即时通信客户端在线状态的方法,其特征 在于,所述方法还包括如果所述客户端收到消息包或在发送心跳包的第二 预设时间内收到所述服务器返回的心跳确认包,则判定所述客户端处于在线 状态。
6、 根据权利要求4所述的判定即时通信客户端在线状态的方法,其特征 在于,所述方法还包括在收到所述服务器返回的心跳确认包时计时清零并 开始计时。
7、 根据权利要求4所述的判定即时通信客户端在线状态的方法,其特征 在于,所述方法还包括设定所述第一预设时间和所述第二预设时间。
8、 一种即时通信服务器,所述服务器与即时通信客户端进行数据交互, 其特征在于,所述服务器用于接收到所述客户端发送的消息包则计时清零并 开始计时,判断当计时在第三预设时间内是否收到所述客户端发送的心跳包, 如果未收到,则判定所述客户端处于离线状态。
9、 根据权利要求8所述的即时通信服务器,其特征在于,所述服务器包括收发模块,用于接收所述客户端发送的消息包及心跳包;计时器,与所述收发模块相连,用于当所述收发模块收到消息包时计时清零并开始计时;判定模块,与所述计时器相连,用于判断在第三预设时间内所述收发模 块是否收到所述客户端发送的心跳包,如果未收到,则判定所述客户端处于 离线状态。
10、 根据权利要求9所述的即时通信服务器,其特征在于,所述收发模块 还用于收到
11、 一种即时通信系统,包括服务器及与其进行数据交互的至少一个客 户端,其特征在于,所述客户端用于接收到所述服务器发送的消息包则计时清零并开始计时,当计时到第一预设时间则发送心跳包至所述服务器,以及 判断在发送心跳包后的第二预设时间内是否收到所述服务器返回的心跳确认 包,如果未收到,则判定所述客户端处于离线状态。
12、根据权利要求ll所述的即时通信系统,其特征在于,所述服务器用 于接收到所述客户端发送的消息包则计时清零并开始计时,判断当在第三预 设时间内是否收到所述客户端发送的心跳包,如果未收到,则判定所述客户 端处于离线状态。
全文摘要
本发明提供了一种即时通信系统、即时通信客户端、即时通信服务器及判定即时通信客户端在线状态的方法。所述方法包括当收到消息包时计时清零并开始计时,当计时到第一预设时间则发送心跳包至服务器;判断是否在发送心跳包后的第二预设时间内收到所述服务器返回的心跳确认包,如果未收到,则判定所述客户端处于离线状态。采用本发明提供的即时通信系统、客户端、服务器及判定客户端在线状态的方法,能提高判定的准确性。
文档编号H04L12/58GK101552740SQ20091003947
公开日2009年10月7日 申请日期2009年5月14日 优先权日2009年5月14日
发明者冼文佟, 旭 张, 涛 王, 范瑞彬, 范跃伟 申请人:腾讯科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1