即时通讯系统更新联系人状态的方法及即时通讯系统的制作方法

文档序号:7926516阅读:191来源:国知局
专利名称:即时通讯系统更新联系人状态的方法及即时通讯系统的制作方法
技术领域
本发明涉及即时通讯技术,尤其涉及到即时通讯系统更新联系人状态的 方法及即时通讯系统。
背景技术
联系人状态的展现是即时通讯领域的基础体验。通过联系人状态的展 现,本地客户端用户可以清楚的了解到对方是否在线、忙碌、离线,并据此 产生对对方是否能即时回复消息的期望。联系人状态是用户在客户端上了解 到联系人最直观的信息,而这个信息是极具时效性的。正因为状态的重要性, 是否能够准确、实时的展现联系人状态,是评判一套即时通讯系统合格与否 的重要标准。现有的即时通讯系统中,客户端更新联系人状态的方法通常是客户端主动查询。原理如图1所示。该图中,客户端A与客户端B地位平等。即客 户端A状态发生改变时即时通知服务器,服务器由此保存所有客户端的实时 状态。客户端B可以设置它所关注的联系人列表(一般此列表等同于B的好 友列表),客户端B定时向服务器查询客户端A的状态情况。由此看出,现有技术的客户端更新联系人状态时造成的带宽成本和客户 端B所关注的联系人数量成正比关系。 一般而言,在网络数据中,至少需要 使用4个字节的数据代表一个联系人,状态信息用一个字节表示,加上控制 信令和数据加密的开销,假设每个联系人带来6个字节的数据开销。当B的 联系人数量达到5000人的时候,每次查询将给服务器带来约30k的数据量, 如果每分钟查询一次,单台服务器维持5000人同时在线,平均带宽负载为 30k*8 bit/byte *5000人/60=200001: bit/s-20M bit/s 目前的即时通讯系统中的企业即时通讯系统同时/IU旦通^[言和管理功能,需要客户端关注状态的联系人往往在千人以上,甚至突破万人,大型现代企 业更提出了 10万同时在线这样一个数量级的需求,由此可见现有技术中即时 通讯系统更新联系人状态的方法将造成巨大的带宽成本,不仅如此,现有技 术更新联系人状态时服务器需要分析每个客户端关注的联系人列表,并在自 己的内存中查找到相应的状态信息,因此将带来可观的计算负载,过高的负 载将导致网络丟包、服务器运行稳定性下降等缺陷。发明内容本发明提供的即时通讯系统更新联系人状态的方法及即时通信系统,可 以降低服务器更新联系人状态的计算量,减轻服务器负载,并可以减少带宽 成本。本发明提供的即时通讯系统更新联系人状态的方法,包括步骤服务器建立域内联系人组的存储区域,将域内联系人的状态信息进行保 存,所述域内联系人为属于同 一 所述域内联系人组的联系人;所述服务器对所存储的所述域内联系人的状态信息进行更新;所述服务器将更新后的所述域内联系人的状态信息发送至所述域内联系 人的客户端。本发明提供的即时通讯系统,包括客户端和服务器; 所述服务器包括第一域内联系人存储模块,用于存储所述域内联系人的状态信息,所述 域内联系人为存储于同 一域内联系人存储模块的联系人;第一通信模块,用于接收和发送各种指令、从所述域内联系人存储模块 获取所述域内联系人的状态信息进行发送、以及将接收的更新后的所述域内 联系人的状态信息存入所述第一域内联系人存储模块;以及所述客户端包括第二域内联系人存储模块,用于存储所述域内联系人的状态信息;第二通信模块,用于接收和发送各种指令、接收所述第一通信模块发送 的域内联系人状态信息以及更新后的所述域内联系人状态信息存入所述第二 域内联系人存储模块。由上可知,由于本发明将联系人划分为不同的联系人组,对于域内联系 人组采用服务器主动推送的方式进行更新,由于服务器无需分析客户端的联 系人列表,而是直接将更新后的联系人状态信息发送至客户端,因此大大降低了服务器的计算量;同时,由于本发明无需客户端定时向服务器请求更新 联系人状态信息,因此大大减少了由于客户端查询造成的带宽成本,从而降 低了整个系统的带宽成本。


图1为现有技术中即时通讯系统更新联系人状态信息的流程图;图2为本发明中即时通讯系统更新域内联系人状态信息的流程图;图3为本发明中即时通讯系统更新域外联系人状态信息的流程图;图4为本发明的一实施例中企业组织架构图;图5为一个实施例的即时通讯系统的结构原理框图;图6为一个实施例的即时通讯系统的结构原理框图。
具体实施方式
本发明将客户端的联系人按照一定的规则预先分组,然后将联系人按组 在服务器上存储,当更新组内的联系人状态信息时,采用服务器主动推动的 方式进行状态更新。本发明的即时通讯系统更新联系人状态的方法,请参见图2,首先在服务器建立域内联系人组的存储区域,将域内联系人的状态信息存入该域内联系人组(步骤1);本发明中服务器对于域内联系人的状态信息的更新方式可以 釆用实时更新的方式,具体来说,当某个域内联系人的状态发生变化时,该 域内联系人所在的客户端会主动通知服务器,服务器及时更新该域内联系人 在域内联系人组中的状态信息(步骤2);服务器主动对客户端的域内联系人 的状态信息进行更新(步骤3 )。由于本发明将联系人分成了不同的域内联系人组,服务器定时主动将更 新后的域内联系人信息发送至域内联系人组的客户端,从而避免了现有技术 中客户端定时请求更新状态信息造成的巨大带宽压力,同时,由于服务器无 需分析客户端的联系人列表,而是将更新后的联系人状态信息发送给客户端, 因此减小了 了服务器的计算量。作为对上述过程的进一步改进,在服务器端设置有第一定时器,服务器 根据第一定时器发送的触发信号向客户端发送更新后的域内联系人的状态信 息。另外,为了为某个域内联系人组的客户端提供其他域内联系人组的联系 人(即访问域外联系人)的途径,本发明还可以在客户端建立域外联系人组 的存储区域,保存域外联系人的状态信息,例如,可以为客户端提供搜索域 外联系人的入口,如图3所示,当客户端需要与某个域外联系人通信时,客 户端通过该入口搜索到域外联系人,可以在首次向服务器查询该域外联系人 的状态信息时将域外联系人的状态信息保存至域外联系人组(步骤4);作为 一个优选实施例,本发明对于域内联系人和域外联系人分别设定了不同的更 新规则;由于域外联系人的数量相对较少,对于域外联系人可以采用客户端 主动查询的方式更新联系人状态,客户端根据第二定时器发送的触发信号向 服务器定时请求更新域外联系人的状态信息(步骤5 )。为了更加清晰的阐述本发明,以下以企业即时通讯系统为例进4亍详细i兌明。实施例一对于同时承担通信和管理功能的企业即时通信系统,需要客户端关注状态的联系人往往在千人以上,甚至突破万人,而由于个人计算机 的资源限制,当企业即时通信用户的在线需求达到10万数量级别时,即时通 信客户端通常无需同时处理同样多的在线用户的通信需求,包括状态处理。根据这个特点,在本实施例中,根据企业的架构特性区分客户端的域内联系 人和域外联系人。在企业即时通信领域, 一般情况下,用户的沟通需求由工作需求产生。才艮据组织架构的树形结构,可以画出任两个员工之间的唯一3各径。如图4所 示,员工A到员工B的路径为员工A^研发部门^无线系统^市场部门+员 工B。假设每一层组织架构之间的距离为1,从客户端A到客户端B的距离为 4。客户端A到客户端C的距离为6。两个客户端之间的距离越远,他们的工 作相关性往往越小,发生沟通需求的可能性也就越小。对于一个上千人的分 公司而言,绝大多数的通信都集中在该公司内部员工之间,少数人或者少数 场景下会产生跨越数千人的分公司之间的沟通。据此,在使用本发明时,执行步骤1之前对联系人进行分组所依据的预 定规则可以是以分公司为单位,将图4中的xx集团划分为几个域内联系人组, 同属一个域内联系人组内的联系人互为域内联系人,分属不同组的联系人互 为域外联系人。值得指出的是,对于划分域内联系人组和域外联系人组所依 据的预定规则并非仅此一种唯一方式,不应将此种划分方式作为对本发明的 限制,用户依据不同需求将联系人分组后使用本发明均可达到本发明预期的 效果。例如,在实际的即时通信系统中,我们还可以根据一个组织下的人数 来划分域内联系人组。在执行步骤l时,由于组织架构的确定性,当即时通信系统的管理员定 义好域内联系人组之后,在服务器端预先存储域内联系人组的各域内联系人 的信息,在本实施例中,作为一种优选方式,可以针对每个域内联系人组分 配一个专门的服务器,以减轻服务器的负载量。在步骤1之后,服务器可以 在客户端启动时告知客户端域内联系人组的域内联系人列表,即在所有域内 联系人的客户端均存在与服务器一致的域内联系人列表。对于同在一个组的域内联系人,由于他们之间的联系趋向紧密,在执行步骤3时,采取的策略是服务器主动推送状态信息,具体而言设置第一定时器,由第一定时器按 照预定的定时周期向服务器发送触发信号,当服务器收到触发信号后向域内 联系人组中的所有域内联系人对应的客户端主动发送更新后的域内联系人状 态信息,同时更新多个客户端的状态信息,由此可以保证该域内联系人组的 所有联系人的状态信息实时刷新。现有技术中,由于每个客户端的联系人列表各不相同,服务器需要分析 每个客户端关注的联系人列表,并在自己的内存中查找到相应的状态信息,当联系人数量达到千人规模,将带来可观的计算负载。过高的负载带来的坏 处显而易见,如网络丢包、服务器运行稳定性下降等。而在本实施例中,由 于是服务器主动推送,而并非客户端主动查询,并且由于客户端与服务器端 所保存的域内联系人列表一致,因此服务器无需对客户端的联系人列表进行 分析, 一次性将需要更新的域内联系人的状态信息统一下发给多台客户端, 从而大大降低了服务器的计算量,减少服务器的负荷。对于上述服务器将更新后的域内联系人的状态信息下发至各客户端的过 程可以是服务器执行步骤2的过程中,当将更新后的域内联系人信息存储 至域内联系人组时,在域内联系人组中将该更新过的域内联系人进行标识, 当执行步骤3时,从域内联系人组中查询具有该标识的域内联系人,然后统 一下发给各域内联系人对应的客户端。作为对上述执行步骤3的方式的进一步的改进,为了进一步减少服务器 的计算量,作为一个优选实施例,可以预先在服务器建立第一临时存储区域, 执行步骤2时,某个域内联系人的状态发生变化时通知服务器状态发生变化, 服务器在更新域内联系人组的相关信息时同时将更新后的域内联系人的状态 信息存入第一临时存储区域;执行步骤3时,当第一定时器触发服务器执行 操作时,服务器从第一临时存储区域获取域内联系人的状态信息,发送至所 有域内联系人对应的客户端。由于服务器无需从域内联系人组中查询状态发 生变化的域内联系人,因此减少了服务器的计算量。为了使审查员对本发明的有益效果有个更加直观的印象,以第一定时器设置的定时周期为半分钟为例与现有技术进行对比如果企业即时通信每半分钟的联系人的状态变化率为1%左右(即,半分 钟内,每100人中有l人状态发生变化),假设当前的域内联系人组包括5000 个域内联系人,利用本实施例后我们可以计算出服务器处理数据量的一般数 值和峰值 一般的带宽消耗5000人* 1% * 6byte/人承8bit/byte * 5000 /30s=400kbit/s;带宽峰值5000人* 2% * 6byte/人水8bit/byte * 5000 /30s=800kbit/s可见采取此实施例后将状态带来的带宽成本降低到现有技术中客户端查 询模式的1/50到1/25。而对于不在一个域内联系人组的域外联系人,由于他们之间的联系相对 较少,因此作为一个实施例,在执行步骤5时,采取的策略是客户端主动查 询状态信息,具体而言每个客户端所保存的域外联系人组可以不同,针对 每个客户端可以分别设置第二定时器,由第二定时器按照预定的定时周期向 该客户端发送触发信号,当客户端收到触发信号后向服务器发送请求消息, 请求更新域外联系人状态信息;服务器分析该客户端的域外联系人列表,查 询相应的域外联系人状态信息,将更新后的域外联系人状态信息发送至该客 户端。在本实施例中,由于对于客户端关注的域外联系人对应的服务器与该客 户端对应的服务器位于不同的服务器,因此,可以在服务器端建立域外联系 人组的存储区域,该客户端向服务器查询域外联系人的状态信息时,服务器 向该域外联系人所在的服务器进行查询,服务器可以在首次向该域外联系人 所在的服务器查询时将该域外联系人的信息保存在域外联系人组的存储区域 中,当域外联系人的状态信息发生变化时,域外联系人所在的服务器将及时 向该客户端的服务器发送更新消息,该服务器将更新后的域外联系人状态信 息存储于域外联系人组中,以减少服务器对域外联系人服务器的查询量。当然,该服务器也可以不保存域外联系人的信息,当客户端向服务器查询域外 联系人的信息时,服务器实时向域外联系人的服务器获取,在此不再赘述。由于在本实施例中将客户端的联系人按照联系的频繁度进行区分,因此对于联系相对紧密的域内联系人的设置的状态更新时间间隔可以短于域外联 系人的状态更新时间间隔,即第一定时器的定时周期小于第二定时器的定时 周期。由于即时通信域内联系人之间的通信占主导地位,域间通信只是偶然 的,可以预测到,联系人的域外联系人数量是有限的。同样,为了给审查员 一直观印象,以设置的第二定时器的定时间隔为一分钟为例,假设每个联系 人的域外联系人平均数量为100人,则域外联系人状态的获取带来的带宽占用为IOO人* 6 byte/人* 8 bit/byte * 5000 / 60 s = 400kbit/s 可见大用户量的状态更新带来的带宽成本仍然是可承受的。 进一步,当联系人数量增加时,客户端需要付出的内存、cpu等硬件资 源,以及句柄、线程等软件系统资源,同样会线性增加,导致客户端软件带 来高资源消耗,使之渐渐脱离用户的使用要求。作为一个实施例,可以限定 客户端域外联系人组的容量,当超出此容量时,客户端需要对域外联系人进 行删除,因此基于这样的策略,状态更新带来的带宽成本并不会随着即时通 信系统内的联系人数量增多而增加,客户端维护的联系人数量不会随着整个 即时通信系统人数的扩大而上升,保持一个相对稳定的开销。第二实施例与第一实施例不同,在本实施例中,执行步骤1之后,服 务器可以不通知客户端域内联系人组的域内联系人列表,而是在客户端为客 户端提供域内联系人的入口 ,客户端根据自身需要通过该入口搜索到需要关 注的域内联系人,并保存至域内联系人组中。在执行步骤3的过程可以参照 实施例一,在此不再赘述。不同的是,当服务器将更新后的域内联系人的状 态信息发送至各客户端后,客户端根据本地域内联系人组中的域内联系人列 表从中获取需要的信息,对本地的域内联系人列表进行更新。由于对于域内联系人同样釆用服务器主动推送的方式,因此此实施例的 方式对于服务器端可以达到第一实施例同样的效果,服务器无需关注客户端 的域内联系人列表,无需查询,有效减少服务器的计算量。另外,在第一实施例中,对于更新域内联系人采用的策略还可以是由第 一定时器按照预定的定时周期向客户端发送触发信号,当客户端收到触发信 号后向服务器发送请求更新域内联系人的指令,服务器向域内联系人组中的 所有域内联系人对应的客户端发送更新后的域内联系人状态信息,在此不再赘述。针对上述即时通讯系统更新联系人状态的方法,本发明提供了相应的即时通讯系统的实现途径。第三实施例本发明的即时通讯系统包括服务器和客户端,服务器包括 第一域内联系人存储模块、第一通信模块;客户端包括第二域内联系人存储 模块、第二通信模块;另外,作为进一步的改进,服务器还可以包括第一定 时器,如图5所示。工作原理如下所述第 一域内联系人存储模块存储域内联系人的状态信息,域内联系人是指 存储于同一域内联系人存储模块的联系人;第一通信模块接收和发送各种指 令,将服务器所存储的域内联系人存储模块中的域内联系人列表信息发送至 第二通信模块,第二通信模块在第二域内联系人存储模块中进行存储。当接 收到第二通信模块的更新域内联系人的状态信息的请求时,将更新后的域内联系人的状态信息存储至第 一域内联系人存储模块,并对更新后的域内联系 人进行标识,当第一定时器向第一通信模块发送触发更新域内联系人的状态 信息的触发指令时,第 一通信模块从域内联系人存储模块获取更新后的域内 联系人状态信息发送至第二通信模块、第二通信模块将接收的更新后的域内 联系人的状态信息存入第二域内联系人存储模块。作为上述实施例的进一步改进,如图6所示,服务器还包括第一临时存 储模块,第 一通信模块接将更新后的所述域内联系人的状态信息存入第 一 临 时存储模块。第一通信模块从第一临时组获取域内联系人的状态信息,发送 至第二通信模块。另外,作为对第三实施例的进一步改进,客户端还包括第一访问接口模 块,为第二通信模块提供查询域外联系人的接口、第一域外联系人存储模块, 以及第二定时器。第二通信模块可以通过第 一访问接口模块将从服务器查询的域外联系人存储于第一域外联系人存储模块;作为一个实施例,客户端可 以通过第二定时器向所述第二通信模块发送触发更新所述域外联系人的状态 信息的触发指令;第二通信模块接收到触发指令后向服务器查询更新后的域 外联系人的状态信息。作为一个优选方案,第一定时器的定时周期小于第二 定时器的定时周期。进一步,由于域外联系人可以与域内联系人位于不同的服务器上,因此, 作为一个优选实施例,服务器还包括第二域外联系人存储模块,存储从其它 服务器查询的域外联系人的状态信息。当需要更新域外联系人的信息时,第 一通信模块从第二域外联系人组获取更新后的域外联系人状态信息,发送至 第二通信4莫块。第四实施例与第三实施例不同,本实施例中,客户端还可以包括第二 访问接口模块,为所述第二通信模块提供向第 一通信模块查询域内联系人的 接口;服务器不需将所存储的域内联系人的列表信息发送给客户端,客户端 根据需要通过第二通信模块将通过第二访问接口模块查询的域内联系人添加 至第二域内联系人存储模块的域内联系人列表;当第 一通信模块将更新后的 域内联系人信息发送给第二通信模块时,第二通信模块根据域内联系人列表 将更新后的域内联系人的状态信息存入第二域内联系人存储模块。以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本 发明的权利要求保护范围之内。
权利要求
1、一种即时通讯系统更新联系人状态的方法,其特征在于,包括步骤服务器建立域内联系人组的存储区域,将域内联系人的状态信息进行保存,所述域内联系人为属于同一所述域内联系人组的联系人;所述服务器对所存储的所述域内联系人的状态信息进行更新;所述服务器将更新后的所述域内联系人的状态信息发送至所述域内联系人的客户端。
2、 根据权利要求1所述的即时通讯系统更新联系人状态的方法,其特征 在于,所述服务器发送更新后的所述域内联系人的状态信息之前还包括步骤 所述服务器接收第一定时器的触发指令。
3、 根据权利要求2所述的即时通讯系统更新联系人状态的方法,其特征 在于,所述步骤还包括所述域内联系人的客户端建立域外联系人组的存储区域,将域外联系人 的状态信息进行保存;所述域内联系人的客户端接收第二定时器的触发指令;并向所述服务器 发送请求指令,所述服务器将更新后的所述域外联系人的状态信息发送至所 述域内联系人的客户端;所述第一定时器的定时周期小于所述第二定时器的定时周期。
4、 根据权利要求1所述的即时通讯系统更新联系人状态的方法,其特征 在于,所述服务器将域内联系人的状态信息保存后,还包括步骤将所述域内联系人的列表信息发送至各域内联系人的客户端,所述域内 联系人的客户端将所述域内联系人的列表信息保存至本地的所述域内联系人组。
5、 根据权利要求1至4中任一项所述的即时通讯系统更新联系人状态的 方法,其特征在于,所述步骤还包括所述服务器建立第一临时存储区域,所述服务器对所存储的所述域内联系人的状态信息进行更新时还包括步骤将更新后的所述域内联系人的状态信息存入所述第 一 临时存储区域;服务器将更新后的所述域内联系人的状态信息发送至客户端的步骤包 括服务器从所述第一临时存储区域获取所述域内联系人的状态信息,发送 至所述域内联系人的客户端。
6、 根据权利要求3所述的即时通讯系统更新联系人状态的方法,其特征 在于,所述步骤还包括所述服务器建立所述域外联系人组的存储区域;当所述域内联系人的客户端首次查询所述域外联系人的状态信息时还包 括步骤所述服务器将所述域外联系人存入本地的所述域外联系人组的存储区域;所述服务器将更新后的所述域外联系人的状态信息发送至所述客户端的步骤包括所述服务器从所述域外联系人组获取更新后的所述域外联系人状态信 息,发送至所述域内联系人的客户端。
7、 一种即时通讯系统,包括客户端和服务器;其特征在于, 所述服务器包括第一域内联系人存储模块,用于存储所述域内联系人的状态信息,所述 域内联系人为存储于同 一 域内联系人存储模块的联系人;第一通信模块,用于接收和发送各种指令、从所述域内联系人存储模块 获取所述域内联系人的状态信息进行发送、以及将接收的更新后的所述域内 联系人的状态信息存入所述第 一域内联系人存储模块;所述客户端包括第二域内联系人存储模块,用于存储所述域内联系人的状态信息;第二通信模块,用于接收和发送各种指令、接收所述第一通信模块发送 的域内联系人状态信息以及更新后的所述域内联系人状态信息存入所述第二 域内联系人存储模块。
8、 根据权利要求7所述的即时通讯系统,其特征在于,所述服务器还包括第 一定时器,用于向所述第 一通信模块发送触发更新所述域内联系人的 状态信息的触发指令。
9、 根据权利要求8所述的即时通讯系统,其特征在于, 所述客户端还包括第 一访问接口模块,用于为所述第二通信模块提供查询域外联系人的接 口 ,所述域外联系人为存储于不同的所述域内联系人存储模块的联系人;第一域外联系人存储模块,用于存储域外联系人的状态信息;以及第二定时器,用于向所述第二通信模块发送触发更新所述域外联系 人的状态信息的触发指令;所述第一定时器的定时周期小于所述第二定时器的定时周期。
10、 根据权利要求7至9中任一项所迷的即时通讯系统,其特征在于, 所述服务器还包括第一临时存储模块,所述第一通信模块接将更新后的所述 域内联系人的状态信息存入所述第 一 临时存储模块;所述第一通信模块还用于从所述第一临时组获取所述域内联系人的状态 信息,发送至所述第二通信模块。
全文摘要
本发明提供的即时通讯系统更新联系人状态的方法,服务器建立域内联系人组,将域内联系人的状态信息进行保存,所述域内联系人为属于同一所述域内联系人组的联系人;所述服务器对所存储的所述域内联系人的状态信息进行更新;所述服务器将更新后的所述域内联系人的状态信息发送至所述域内联系人的客户端。本发明还提供了相应的即时通讯系统。使用本发明可以有效降低服务器的计算量及减轻带宽压力。
文档编号H04L12/58GK101404627SQ20081021907
公开日2009年4月8日 申请日期2008年11月13日 优先权日2008年11月13日
发明者夏志勇 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1