背景技术
随着网络技术的发展,为满足网络即时通信的需求,目前出现了许多即时通信系统。通常,即时通信系统包括服务器和客户端两部分:服务器主要用于提供即时消息的存储、转发服务,并在客户端登录后向其发射即时消息;客户端主要用于提供即时消息的编辑和发送服务,以及即时消息的接收、通知和显示等服务。
目前,即时通信系统中都维护着用户拥有的联系人资料。联系人资料是指与联系人相关、有别于即时通信帐号的姓名、性别、年龄等个人资料,以及电话、地址、电子邮件(email)等联系方式信息,还包括其它该联系人需要展示给其他用户的个人信息,联系人可以通过登录自己的客户端修改这些信息。对于应用于办公自动化的企业即时通信系统,办公自动化的管理员可以通过登录业务服务器(服务器)或者办公自动化管理页面修改员工个人资料,修改后的资料保存在业务服务器端,客户端通过向业务服务器查询的方式获取其它联系人的个人资料,并通过标准界面展示出来。
图1为即时通信系统中联系人资料的操作示意图。如图1所示,用户A和用户B各运行一个客户端;在服务器端,存在一个联系人资料业务服务器101,其中存储联系人的资料,该联系人资料业务服务器101总是被动的响应用户客户端并提供服务。用户可以修改自己的个人资料,并且可以查询其他人的资料。例如,所述用户A可以请求查看某联系人的个人资料,此联系人可以是用户A自己;用户A也可请求修改个人资料,一般情况下只能修改自己的;用户B可以查询用户A的资料。对于联系人资料业务服务器101来说,主要的网络负载来源于用户查看某联系人的个人资料。用户客户端从服务器端获取联系人资料后在本地显示出来,例如图2为一种联系人资料的显示界面示意图。
在即时通信系统中,联系人的资料能够为用户提供非常有用的信息。尤其在企业即时通信领域,联系人资料的明晰显得尤为重要。例如图1中,通过查看用户B的资料,用户A可以更好的了解B,获取B的线下联系方式等。此外,联系人资料除了向用户展现外,在一些快捷工具选项(例如查找联系人、拨打电话、发送短信、发送邮件等)功能中也必不可少。
但是即时通信系统中的联系人资料不是固定不变的,服务器端的联系人资料往往由于用户的修改而发生改变,因此需要将最新的联系人资料更新给客户端,以使用户获取最新最准确的联系人资料。
目前,联系人资料的更新技术主要包括以下三种:
现有技术一:采取需要展示联系人资料时才更新联系人资料的办法,客户端不主动更新联系人资料,只有当用户请求查看某个联系人资料时,由客户端即时从服务器端拉取该联系人的资料,并展示在本地。这种现有技术数据交换量少,占用的网络带宽小。但是其缺点是:客户端本地无法及时更新所有联系人的资料,因此无法满足丰富的即时通信扩展功能,例如无法查找某一联系人、无法拨打电话、发送短信等,或者延时较长,影响用户体验。
现有技术二:客户端登录上线后立即集中尝试更新所有联系人的资料。这种处理方法由于可以及时获取到所有联系人的资料,所以能够满足丰富的即时通信扩展功能。但是其缺点是:数据交换量大,登录时突发占用的网络带宽大,服务器的突发负载大,影响客户端登录性能及内存占用性能。
现有技术三:在即时通信处理系统中将用户拥有的联系人数据分为“登录时必须使用的数据”和“使用过程中才会用到的数据”,客户端登录时只获取“登录时必须使用的数据”,在即时通信中获取“使用过程中才会用到的数据”。这种现有技术可以减少数据流量,降低服务器的负载。但是其缺点是:在整个流程中只更新了联系人的部分资料,有些资料可能永远不会更新,除非用户需要查看,这样导致客户端无法及时更新所有联系人的所有资料,因此无法满足丰富的即时通信扩展功能,例如无法查找某一联系人、无法拨打电话、发送短信等,或者延时较长,影响用户体验;另外,这种方法在客户端登录时还会有一个突发的短暂高负载,从而影响即时通信系统的性能。
综上所述,现有技术中还没有一种既可以满足丰富的即时通信扩展功能,又减少网络突发负载的用于更新即时通信联系人资料的技术方案。这个缺陷制约着即时通信系统应用的发展,进而影响用户的使用质量。例如,在一个规模较大的企业即时通信系统中,采取怎样的联系人资料更新方案,在满足各种即时通信扩展功能(例如利用根据最新的联系人资料查找联系人、拨打电话、发送短信、发送邮件等)需求的同时,将服务器负载稳定地控制在较低的水平,并避免出现突发的短暂高负载,对降低带宽要求和企业部署成本十分重要。
发明内容
有鉴于此,本发明所要解决的技术问题在于提供一种即时通信联系人资料的更新方法,既可以及时更新所有联系人的资料以满足即时通信系统的扩展功能,又可以减少网络突发负载,提高即时通信系统的性能。
本发明所要解决的又一技术问题在于提供一种即时通信系统,既可以及时更新所有联系人的资料,又可以减少网络突发负载,提高性能。
为了实现上述发明目的,本发明的主要技术方案为:
一种即时通信联系人资料的更新方法,包括:
A、在客户端设置待更新联系人队列,将联系人列表添加到所述待更新联系人队列中;
B、按照所述待更新联系人队列中的联系人顺序,依次定时触发各联系人资料更新流程,从服务器获取最新的联系人资料并存储在客户端。
优选的,所述步骤A中具体包括:将本地客户端的所有联系人列表定时定量地添加到所述待更新联系人队列中。
优选的,该方法进一步包括:当客户端接收到查看某一联系人资料的请求时,将该联系人添加到所述待更新联系人队列中的最先触发位置,优先触发对该联系人的更新流程。
优选的,所述联系人资料中包括版本号;对某一联系人资料,步骤B中所述更新流程具体包括:B1、从服务器获取该联系人资料的版本号;B2、比较服务器返回的版本号和客户端存储的该联系人资料的版本号,如果不同,则从服务器获取该联系人资料并更新原有资料;如果相同,则触发对待更新联系人队列中的下一联系人资料的更新流程。
优选的,所述方法进一步包括:客户端接收搜索请求时,以搜索请求中的字符为关键字查找客户端存储的联系人资料,并显示查找到的联系人资料。
优选的,该方法进一步设置优先策略信息,所述步骤A中按照所述优先策略信息将客户端的联系人列表依次添加到所述待更新联系人队列中。
优选的,所述联系人资料在客户端以扩展标记语言文件形式存储,在服务器端以关系数据库形式存储。
优选的,该方法在客户端成功登录服务器后执行。
一种即时通信系统,包括客户端和服务器,所述客户端存储联系人列表及联系人资料,所述服务器中存储联系人资料,所述客户端包括:
添加模块,用于将客户端的联系人列表添加到一待更新联系人队列;
第一定时器和联系人资料更新模块,所述第一定时器用于按照所述待更新联系人队列的联系人顺序,依次定时触发联系人资料更新模块从所述服务器获取最新联系人资料。
优选的,所述客户端进一步包括:第二定时器,用于定时触发所述添加模块将本地客户端的所有联系人列表定时定量地添加到所述待更新联系人队列中。
优选的,所述客户端进一步包括:补偿添加模块,用于在客户端接收到查看某一联系人资料的请求时将该联系人添加到所述待更新联系人队列中最先触发位置。
优选的,所述联系人资料更新模块进一步包括:
版本号请求模块,用于向服务器发送获取联系人资料版本号的请求,接收返回的联系人资料版本号;
版本号判断模块,用于比较服务器返回的联系人资料版本号和本地存储的对应联系人资料版本号,在版本号相同时停止本联系人资料的更新,在版本号不同时触发联系人资料请求模块向服务器发送获取联系人资料的请求;
联系人资料请求模块,用于向服务器发送获取联系人资料的请求,接收返回的联系人资料;
所述服务器包括:
版本号检索响应模块,用于接收客户端的获取联系人资料版本号的请求,检索出所请求的版本号并返回给发起请求的客户端;
联系人资料检索响应模块,用于接收客户端的获取联系人资料的请求,检索出所请求的联系人资料并返回给发起请求的客户端。
本发明在客户端设置更新联系人队列,将联系人列表添加到该队列中,并依次定时从服务器获取更新该队列中所有联系人的资料,定时间隔可以客户端性能、网络带宽、以及服务器的负载情况进行设置,从而使得客户端可以在登录后及时获取所有联系人的最新资料,以支持丰富的即时通信功能,同时对急需展示最新资料的联系人添加到所述队列中的最优位置,并进行资料的优先更新补偿,使得展示在客户端的联系人资料保持最新;另一方面,在满足以上丰富功能的前提下,采取慢速的依次定时更新方式,可以将资料更新功能所需的网络带宽和服务器负载保持在较低的水平,减少了网络的突发负载,提高了即时通信系统的性能(其中包括客户端登录性能及内存占用性能)进而节约了即时通信系统的运营成本。
具体实施方式
下面通过具体实施例和附图对本发明做进一步详细说明。
本发明的即时通信系统包括客户端和服务器,所述客户端存储联系人列表以及联系人的资料,所述服务器中存储联系人资料,服务器中的联系人资料可以由用户进行更新。
本发明的核心思想为:在客户端设置待更新联系人队列,将联系人列表添加到所述待更新联系人队列中;然后按照所述待更新联系人队列中的联系人顺序,依次定时触发各联系人资料更新流程,从服务器获取最新的联系人资料并存储在客户端。
下面介绍本发明所述即时通信系统执行本发明所述即时通信联系人资料更新方法的实施例。
在客户端,联系人资料以扩展标记语言(XML,eXtended MarkupLanguage)文件形式存在,以方便客户端进行快速查找。在服务器端,联系人资料以关系数据库形式存在,采用数据库标准查询语言(SQL,StructuredQuery Language)进行检索。例如表1为一个联系人资料的属性示例,如表1所示,一个联系人资料中可以具体包括帐号、姓名、性别、年龄、电话等信息。
属性 |
值 |
联系人帐号 |
accountB |
姓名 |
张三 |
性别 |
男 |
年龄 |
25 |
电话 |
134xxxx |
…… |
…… |
表1
图3为本发明所述方法的一种实施例流程图。参见图3,该流程包括:
步骤301、客户端登录服务器。
步骤302、客户端登录成功后,将本地用户的联系人标识添加到所述待更新联系人队列。
此处,可以一次性地将本地所有联系人的列表添加到所述待更新联系人队列中,也可以由第二定时器触发,定时将一定数量的本地用户的联系人标识添加到所述待更新联系人队列,例如如果有1000个联系人,则每次添加100个,每间隔150秒触发添加一次,分10次添加完成,以实现分批将本地用户的所有联系人都添加到所述待更新联系人队列。此处使用第二定时器触发,是基于节约客户端所占内存以及降低本事件对客户端登录性能的影响两方面的考虑。所述的联系人列表中可以是联系人资料中任何一个区别于其他联系人的标识信息,例如联系人帐号、姓名、电话号码等,一般来说是将联系人的帐号添加到所述待更新联系人队列。
此处,具体可以依照某种优先策略信息将联系人列表添加入待更新联系人队列,这种优先策略信息可以预先设置在客户端中,体现了联系人资料更新的紧急程度,并且必须保证所有联系人都有机会加入到待更新队列中。通过制定这种优先策略,客户端可以控制联系人的资料更新顺序,从而保证哪些联系人的资料先更新,哪些联系人后更新。在客户端上可以提供设置所述优先策略的输入接口,用户可以通过该输入接口设置各个联系人的更新次序;或者所述优先策略信息也可以按照默认的次序排列联系人的更新顺序,例如按照联系人帐号的顺序、联系人姓名的字母或拼音顺序等等;或者根据对某个联系人或某组联系人的关注程度确定更新次序,例如通过对某联系人的点击事件确定更新次序,某个联系人先点击或者点击次数较多则优先添加到所述待更新联系人队列中。
步骤303、由第一定时器触发,客户端每次从待更新队列中取出一个联系人,开始执行资料更新流程,如图3所示,依次定时触发联系人1、联系人2、......、联系人n的资料更新流程,所述n为本地客户端用户的联系人总数。
此处,通过设置所述第一定时器的间隔时长,客户端可以控制更新节奏。第一定时器间隔时长需根据客户端性能、网络带宽、以及服务器的负载情况进行设置,使得客户端性能、网络带宽、服务器负载处于即时通信系统可以接受的状态。例如在一种具体应用实例中,假设每秒钟更新一个联系人资料,用户A共有6000联系人,所有联系人资料可以在登录后100分钟内完成更新。由于在实际场景中,联系人资料更新不会十分频繁,因此上述应用实例中的速度对于客户端体验是可以接受的。
对于每一联系人的资料更新流程,具体包括:将该联系人的标识信息发送给服务器,服务器从关系数据库中检索该联系人的资料,返回给客户端,客户端收到所述联系人资料后更新到本地的所述XML文件中。
为了进一步降低更新资料时的数据流量,减小网络及服务器的负载,本发明还可以在联系人资料中包括一个用于标识联系人资料更新程度的版本号,例如联系人资料的初始版本号为1,在服务器端对该联系人资料每做一次修改,则版本号加1,以此来表示联系人资料的更新程度。以下表2为一种包括根据版本号的联系人资料的属性实例,客户端可以根据该版本号判断对应联系人资料的新旧程度,以判断是否进行更新。例如在客户端A上保存的accountB资料的版本号为1045,如果服务器上保存的accountB资料自从客户端A上次更新过之后一直没有修改,版本号还是1045,此时客户端A不需要更新accountB的资料;但是如果服务器上保存的accountB资料又被accountB修改过两次,变成了1047,则客户端A需要更新accountB的资料。
属性 |
值 |
联系人帐号 |
accountB |
联系人资料版本号 |
1045 |
姓名 |
张三 |
性别 |
男 |
年龄 |
25 |
电话 |
134xxxx |
…… |
…… |
表2
图4为一种根据版本号更新某一联系人资料的流程图。参见图4,当依照所述待更新联系人列表,需要更新某一联系人(假设此处为用户B)的资料时,该流程包括:
步骤401、客户端向服务器发送获取所述用户B版本号的请求,其中包括用户B的标识,例如可以是其帐号accountB。
步骤402~步骤403、服务器收到获取版本号的请求后,根据用户B的标识检索数据库,得到该用户B资料的版本号,并将版本号返回给发起请求的客户端。
步骤404、客户端收到服务器返回的版本号后,从本地XML文件中检索出所述用户B资料的版本号,对比这两个版本号,如果相同,则说明本地XML文件中的用户B资料已经是最新的,不需要再执行更新流程,结束本联系人的更新流程;如果不同,则说明服务器端的用户B资料有更新,执行步骤405。
步骤405、客户端向服务器发送获取所述联系人资料即用户B资料的请求,其中包括用户B的标识。
步骤406~步骤407、服务器收到获取用户B资料的请求后,检索数据库获得用户B的资料,并返回给发起请求的客户端。
步骤408、客户端收到用户B资料后,将该用户B资料更新到本地XML文件的联系人资料中。
本发明通过上述慢速的依次定时更新方式,可以将资料更新功能所需的网络带宽和服务器负载保持在较低的水平,减少了网络的突发负载,同时支持十分丰富的即时通信功能。但是,慢速更新机制并不能保证联系人资料是最新的,例如每秒钟更新一个联系人资料,用户A共有6000联系人,所有联系人资料完成更新需要有100分钟的延迟。而在有些场景下,客户端会收到用户需要查看某联系人的最新资料的请求,例如包括以下场景:
1)用户A在本地客户端A上点击查看联系人accountB的个人资料。
2)用户A在本地客户端A将鼠标悬停在accountB的头像上,以查看accountB的个人资料。
3)用户A在本地客户端A打开与accountB的对话窗口,对话窗口中需展示accountB的最新资料。
在这些场景中,客户端A需启动联系人资料更新补偿机制。图5为联系人资料更新补偿机制的流程图。参见图5,该流程具体包括:
步骤501、用户A查看联系人accountB的资料,客户端A收到查看accountB资料的请求,例如上述的点击事件、鼠标悬停事件、对话窗口开启事件都会触发该请求。
步骤502、客户端A将accountB添加到待更新联系人队列中,accountB在待更新联系人队列中的位置处于最优触发的位置。例如在所述待更新联系人队列中,第一定时器每触发一个联系人的资料更新流程,都会在该联系人标识上做一个标记,所述accountB被添加到所有未触发更新流程的联系人的最前端,以实现优先触发。
步骤503~步骤504、由第一定时器在最近的时间触发对accountB的更新流程,客户端A开始更新accountB的资料,服务器查询accountB的资料并返回给客户端A。具体的更新流程可以参见图3和图4所示流程的相关描述。
步骤505、客户端A从服务器拉取到accountB的最新资料后即对此资料进行界面更新操作,同时将accountB的资料保存在本地XML文件中。
通过上述的慢速的依次定时更新联系人资料的方式以及联系人资料更新补偿机制,本发明可以在客户端A获取所有联系人的资料并保存在本地,从而可以支持丰富的即时通信扩展功能。例如,客户端A可以将XML文件中的联系人资料载入本地内存,并以联系人资料中的某个字段为关键字搜索联系人,快速找到某联系人以展开即时通信。
图6为以姓名查找用户的扩展功能界面示意图。参见图6,只要用户在客户端中输入姓名的检索字,则客户端以该检索字为关键字从内存中或者直接从XML文件中查找匹配的联系人资料,并将查找到的联系人姓名显示在界面上。
图7为以手机号码查找用户的扩展功能界面示意图。参见图7,只要用户在客户端中输入手机号码,则客户端以该手机号码为关键字从内容或直接从XML文件中查找匹配的联系人资料,并将查找到的联系人姓名显示在界面上。
图8为本发明所述即时通讯系统的结构示意图。参见图8,该即时通讯系统包括客户端810和服务器820,其中客户端810的存储模块811存储有联系人列表,所述服务器820中具有存储联系人资料的数据库821。所述客户端包括:
添加模块812,用于将客户端的联系人列表添加到一待更新联系人队列813。
第一定时器814和联系人资料更新模块815,所述第一定时器814用于按照所述待更新联系人队列813的联系人顺序,依次定时触发联系人资料更新模块815从所述服务器820获取最新联系人资料,将联系人资料存入存储模块811,所述存储模块811可以采用XML文件存储联系人资料。
服务器820中包括联系人资料检索响应模块822,用于根据客户端的请求从数据库821中检索请求的联系人资料,并返回给客户端。
所述客户端还进一步包括第二定时器816,用于定时触发所述添加模块812将本地客户端的所有联系人列表定时定量地添加到所述待更新联系人队列813中。
所述客户端进一步包括补偿添加模块817,用于检测客户端的请求指令,在客户端接收到查看某一联系人资料的请求时将该联系人添加到所述待更新联系人队列813中最先触发位置。
图9为所述联系人资料更新模块的一种具体组成模块以及对应服务器组成模块的示意图。参见图9,所述联系人资料更新模块815可包括:
版本号请求模块851,用于向服务器820发送获取联系人资料版本号的请求,接收返回的联系人资料版本号。
版本号判断模块852,用于比较服务器820返回的联系人资料版本号和本地存储的对应联系人资料版本号,在版本号相同时停止本联系人资料的更新,在版本号不同时触发联系人资料请求模块853向服务器820发送获取联系人资料的请求。
联系人资料请求模块853,用于向服务器820发送获取联系人资料的请求,接收返回的联系人资料。
对应的,所述服务器820包括:
版本号检索响应模块823,用于接收客户端的获取联系人资料版本号的请求,从数据库821中检索出所请求的版本号并返回给发起请求的客户端。
联系人资料检索响应模块822,用于接收客户端的获取联系人资料的请求,从数据库821中检索出所请求的联系人资料并返回给发起请求的客户端。
上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。