一种基于Web的即时消息的实现方法

文档序号:7699366阅读:131来源:国知局
专利名称:一种基于Web的即时消息的实现方法
技术领域
本发明属于计算机网络通信技术领域,尤其涉及一种基于Web的即时消 息的实现方法。
背景技术
目前,在基于Web的即时消息系统中,采用的通信方式主要有以下两种
1) 客户端轮询访问的方式;
2) 客户端安装控件,模拟C/S结构的方式。
以上两种方式中,第一种方式由于客户端的轮询访问,请求比较频繁, 对服务器会产生较大的压力。这种方式对于实时性要求不是很高的系统是合 适的,但也存在一个最大的隐患,即如果处理不好,很可能影响到系统的性 能,甚至使整个系统瘫痪。只有对轮询访问的具体方式做一些优化处理,才 能最大限度的减轻服务器的压力。第二种方式采用模拟C/S结构的方式,不 需要进行轮询访问,但需要客户端安装控件,具有-定的局限性。

发明内容
本发明的目的在于,提供一种基于Web的即时消息的实现方法,解决当 前采用的基于Web的即时消息系统性能较低,以及客户端安装控件使用不方便 的问题。
本发明的技术方案是, 一种基于Web的即时消息的实现方法,其特征是 所述方法为用户通过客户端登录系统后,客户端启动轮询,发送HTTP请求访问服务器端;
当所述客户端发送的HTTP请求发送到服务器端后,在服务器端未处理完成该HTTP请求时,所述客户端不会再发送其它HTTP请求;
如果服务器端有其它HTTP请求还未处理完,则所述客户端发送的HTTP请求被忽略,直接返回所述客户端;
如果服务器端收到的所述客户端发送的HTTP请求为接收即时消息请求,并且所述客户端是第一次访问服务器端,则服务器端在内存中初始化所述客户端的即时消息信息,并从服务器端的数据库中取出所述客户端的所有未接收的即时消息发送给所述客户端;
如果服务器端收到的所述客户端发送的HTTP请求为接收即时消息请求,并且所述客户端不是第一次访问服务器端,则服务器端从内存中读取所述客户端的即时消息信息,若有未接收的即时消息,则从服务器端的数据库中取出未接收的即时消息发送给所述客户端,同时更新内存中与所述客户端相关的即时消息信息;若没有未接收的即时消息,则直接返回所述客户端;
如果服务器端收到客户端发送的HTTP请求是发送即时消息请求,并且接收用户在线,则服务器端会更新内存中与接收用户相关的即时消息信息,同时在服务器端的数据库中添加与接收用户相关的即时消息的记录;
如果服务器端收到客户端发送的HTTP请求是发送即时消息请求,并且接收用户不在线,则只在服务器端的数据库中添加与接收用户相关的即时消息的记录
用户退出系统时,服务器端的内存中会自动清除与所述客户端相关的即时
消息f曰息。
所述服务器端包括应用服务器、即时消息服务器和数据库,并采用集群环境。所述即时消息信息包括用户信息、用户使用的客户端信息、客户端是否有未接收的即时消息标志和用户未接收的即时消息列表。
所述服务器端的数据库,存储即时消息,即时消息包括即时消息ID、发送用户工号、接收用户工号、发送时间、接收时间和消息内容。
所述即时消息的接收功能和发送功能通过权限设置开通或不开通。
所述即时消息的接收用户通过用户组配置进行设定。
所述用户以同一身份通过1个以上的客户端登录系统时,若有其他用户给该用户发送即时消息,则与该用户相关的所有客户端窗口均能收到即时消息。
本发明提供的一种基于Web的即时消息的实现方法,无需在客户端安装
控件,采用客户端轮询访问服务器端的方式,在客户端和服务器端均做了很大的性能优化,从而提高了即时消息处理的能力。


图1是集群环境下基于Web的即时消息系统的总体结构图。
图2是服务器端内存创建的即时消息信息结构图。
图3是服务器端的数据库中存储的即时消息结构图。
图4是描述接收即时消息轮询的服务器端处理过程的流程图。
图5是描述发送即时消息轮询的服务器端处理过程的流程图。
具体实施例方式
下面结合附图,对优选实施例作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
图1是集群环境下基于Web的即时消息系统的总体结构图。图1中,用户通过客户端登录系统后,客户端启动轮询,发送HTTP请求访问服务器端。本发明对客户端和服务器端均做了很大的性能优化,当客户端发送的HTTP请求发送到服务器端后,在服务器端未处理完成该HTTP请求时,该客户端不会再发送新的HTTP请求。另外,如果服务器端有其它HTTP请求还未处理完,则客户端发送的HTTP请求被忽略,直接返回客户端。
客户端发送的HTTP请求包括接收即时消息请求和发送即时消息请求。如果服务器端收到的客户端发送的HTTP请求为接收即时消息请求,并且此客户端是第一次访问服务器端,则服务器端在内存中初始化该客户端的即时消息信息,并从服务器端的数据库中取出所述客户端的所有未接收的即时消息发送给客户端。
图2是服务器端内存初始化的即时消息信息结构图。图2中,服务器端内存中的即时消息信息包括用户信息、用户使用的客户端信息、客户端是否有未接收的即时消息标志和用户未接收的即时消息列表。用户信息可以使用户工号、用户代码等唯一标识用户身份的信息;用户使用的客户端信息,可以是客户端的名称、客户端的IP地址、客户端的MAC地址等能够唯一标识客户端的信息;客户端是否有未接收的即时消息标志,可以使用"1"和"0"来标识;用户未接收的即时消息列表中,只存储该用户未接收的即时消息ID。初始化相应客户端的即时消息信息后,从服务器端的数据库取出该客户端所有未接收的即时消息发送给客户端。
图3是服务器端的数据库中存储的即时消息结构图。图3中,服务器端的数据库中存储的即时消息包括即时消息ID、发送用户工号、接收用户工号、发送时间、接收时间和消息内容。其中,在客户端第一次访问服务器是,服务器端根据数据库的接收时间字段,判断是否有未被接收的即时消息,当接收时间字段为空时,说明有未被接收的即时消息,此时将客户端未接收的即时消息发送给客户端,同时将此时的时间写入数据库的接收时间字段中。
如果服务器端收到的客户端发送的HTTP请求为接收即时消息请求,并且所述客户端不是第一次访问服务器端,则服务器端从内存中读取所述客户端的即时消息信息,若有未接收的即时消息,则从服务器端的数据库中取出未接收的即时消息发送给所述客户端,同时更新内存中与所述客户端相关的即时消息信息,更新的内容包括清空即时消息的用户未接收的即时消息列表列和将客户端是否有未接收的即时消息标志修改为"没有未接收的即时消息"。若没有未接收的即时消息,则直接返回所述客户端。
如果服务器端收到客户端发送的HTTP请求是发送即时消息请求,并且接收用户在线,则服务器端会更新内存中与接收用户相关的即时消息信息,同时在服务器端的数据库中添加与接收用户相关的即时消息的记录。
如果服务器端收到客户端发送的HTTP请求是发送即时消息请求,并且接收用户不在线,则只在服务器端的数据库中添加与接收用户相关的即时消息的记录。
当用户退出系统时,服务器端的内存中会自动清除与客户端相关的即时消
息"f曰息。
另外,即时消息的接收功能和发送功能通过权限设置开通或不开通。即时消息接收功能可通过配置文件配置,开通后,所有在线用户均可接收即时消息,并可回复。即时消息发送功能可配置,开通后,用户可向其他用户发送即时消息。通过配置即时消息用户分组,用户可以决定向哪些用户(或用户组)发送即时消息,配置完后,用户即可向组内的所有用户发送即时消息。
当用户以同一身份通过1个以上的客户端登录系统时,若有其他用户给该用户发送即时消息,则与该用户相关的所有客户端窗口均能收到即时消息。
图4是描述接收即时消息轮询的服务器端处理过程的流程图。图4中,
用户接收即时消息的过程是
步骤401:服务器端接收到登录用户从客户端发送的HTTP请求。步骤402:服务器端判断当前是否正在处理其它的请求,也即是否有其它的客户端正在接收即时消息。如果服务器端当前没有处理其它接收消息的请求,则执行步骤403;否则,执行步骤409。
步骤403:访问内存中与该客户端相关的即时消息信息。
步骤404:判断内存中是否有与此客户端相关的即时消息信息。如果内
存中没有与此用户相关即时消息信息,则执行步骤405;否则,执行步骤406。
步骤405:此时说明客户端是第一次访问服务器端,在服务器端内存中
新建此客户端相关的即时消息信息,同时从服务器端的数据库获取此客户端 相关的未接收的即时消息,并发送给客户端,之后将接收时间写入数据库接
收时间字段,而后执行步骤409。
步骤406:读取服务器端内存中与此客户端相关的即时消息信息。
步骤407:根据此客户端的即时消息标志的内容,判断此客户端是否有 未接收的即时消息。如果此客户端有未接收的即时消息,则执行步骤408; 否则,执行步骤409。
步骤408:从数据库获取此客户端未接收的即时消息,而后更新内存中 此客户端相关的即时消息信息,并将接收时间写入数据库接收时间字段。
步骤409:将响应信息返回给客户端。
图5是描述发送即时消息轮询的服务器端处理过程的流程图。图5中,
客户端发送即时消息的过程是
步骤501:客户端发送的HTTP请求是发送即时消息请求,服务器端接 收该请求。
步骤502:判断服务器端是否有其他的请求正在处理,如果有其他请求
正在处理,则忽略该请求,执行步骤506;否则,执行步骤503。
步骤503:服务器端处理该请求,判断接收即时消息的用户是否在线,
如果在线,则执行步骤504;否则,执行步骤505。
步骤504:服务器端会更新内存中与接收用户相关的即时消息信息,即将
即时消息信息的客户端是否有未接收的即时消息标志改写为"有未接收的即时消息",另外,在即时消息信息的用户未接收的即时消息列表中添加未接受的
即时消息ID。
同时,还要在服务器端的数据库中添加与接收用户相关的即时消息的记
录。即在服务器端的数据库中添加一条记录,包括即时消息ID、发送用户工号、 接收用户工号、发送时间、接收时间、消息内容。之后执行步骤506。
步骤505:只在服务器端会的数据库中添加与接收用户相关的即时消息的 记录。即在服务器端的数据库中添加一条记录,包括即时消息ID、发送用户工 号、接收用户工号、发送时间、接收时间、消息内容。
步骤506:返回客户端。
本发明基于Web实现,用户只需一个浏览器(如IE)即可使用即时消 息功能,不需要安装其它软件。多个客户端(浏览器窗口)可以以同一用户 身份在不同机器上同时登录系统,并接收和发送即时消息。同时,该实现支 持应用服务器集群环境,这样就使得从硬件方面提高系统的性能成为可能, 保证了在硬件上的可扩展性。另外,即时消息功能的开放和关闭、用户接收 和发送即时消息的权限以及用户的分组均可配置,给用户提供了极大的灵活 性。本发明使用客户端轮询访问服务器端的方式,在服务器端和客户端均做 了很大的性能优化,用户的即时消息相关信息均存储在服务器的内存中,客 户端只在必要的时候才去访问数据库,获取即时消息。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
权利要求
1. 一种基于Web的即时消息的实现方法,其特征是所述方法为用户通过客户端登录系统后,客户端启动轮询,发送HTTP请求访问服务器端;当所述客户端发送的HTTP请求发送到服务器端后,在服务器端未处理完成该HTTP请求时,所述客户端不会再发送其它HTTP请求;如果服务器端有其它HTTP请求还未处理完,则所述客户端发送的HTTP请求被忽略,直接返回所述客户端;如果服务器端收到的所述客户端发送的HTTP请求为接收即时消息请求,并且所述客户端是第一次访问服务器端,则服务器端在内存中初始化所述客户端的即时消息信息,并从服务器端的数据库中取出所述客户端的所有未接收的即时消息发送给所述客户端;如果服务器端收到的所述客户端发送的HTTP请求为接收即时消息请求,并且所述客户端不是第一次访问服务器端,则服务器端从内存中读取所述客户端的即时消息信息,若有未接收的即时消息,则从服务器端的数据库中取出未接收的即时消息发送给所述客户端,同时更新内存中与所述客户端相关的即时消息信息;若没有未接收的即时消息,则直接返回所述客户端;如果服务器端收到客户端发送的HTTP请求是发送即时消息请求,并且接收用户在线,则服务器端会更新内存中与接收用户相关的即时消息信息,同时在服务器端的数据库中添加与接收用户相关的即时消息的记录;如果服务器端收到客户端发送的HTTP请求是发送即时消息请求,并且接收用户不在线,则只在服务器端的数据库中添加与接收用户相关的即时消息的记录;用户退出系统时,服务器端的内存中会自动清除与所述客户端相关的即时消息信息。
2. 根据权利要求1所述的一种基于Web的即时消息的实现方法,其特征是 所述服务器端包括应用服务器、即时消息服务器和数据库,并采用集群环境。
3. 根据权利要求1所述的一种基于Web的即时消息的实现方法,其特征是 所述即时消息信息包括用户信息、用户使用的客户端信息、客户端是否有未接 收的即时消息标志和用户未接收的即时消息列表。
4. 根据权利要求1所述的一种基于Web的即时消息的实现方法,其特征是 所述服务器端的数据库,存储即时消息,即时消息包括即时消息ID、发送用户工 号、接收用户工号、发送时间、接收时间和消息内容。
5. 根据权利要求1所述的一种基于Web的即时消息的实现方法,其特征是 所述即时消息的接收功能和发送功能通过权限设置开通或不开通。
6. 根据权利要求1所述的一种基于Web的即时消息的实现方法,其特征是 所述即时消息的接收用户通过用户组配置进行设定。
7. 根据权利要求1所述的一种基于Web的即时消息的实现方法,其特征是 所述用户以同一身份通过1个以上的客户端登录系统时,若有其他用户给该用户 发送即时消息,则与该用户相关的所有客户端窗口均能收到即时消息。
全文摘要
本发明公开了计算机网络通信技术领域中的一种基于Web的即时消息的实现方法。技术方案是,用户通过客户端采用轮询方式向服务器端发送请求;如果客户端是第一次访问服务器端,则服务器端在内存中初始化客户端的即时消息信息,否则服务器端从内存中读取客户端的即时消息信息,若有未接收的即时消息,则从服务器端的数据库中取出未接收的即时消息发送给客户端,同时更新内存中与客户端相关的即时消息信息;若没有未接收的即时消息,则直接返回客户端;用户退出系统时,服务器端的内存会自动清除与客户端相关的即时消息信息。本发明无需在客户端安装控件,采用客户端轮询访问方式,提高了即时消息处理的能力。
文档编号H04L29/08GK101510896SQ200910080659
公开日2009年8月19日 申请日期2009年3月23日 优先权日2009年3月23日
发明者辉 孙, 高文渊 申请人:北京佳讯飞鸿电气股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1