专利名称:基于Web的即时通讯方法及装置的制作方法
技术领域:
本发明涉及Web应用领域,特别是涉及一种基于Web的即时通讯方 法及一种基于Web的即时通讯装置。
背景技术:
即时通讯(IM, Instant Messaging)是一种使人们能在网上识别在线 用户并与他们实时交换消息(包括文字信息、档案、语音与视频等)的 技术,由于其所拥有的实时性、低成本、高效率等诸多优势,目前已成 为最为普及的网络沟通方式之一。
现有的即时通讯技术主要涉及基于C/S (客户端/服务器)的即时通 讯方式,如QQ、 MSN等,然而这种即时通讯方式是基于桌面的,需要 安装客户端软件才能实现;考虑到不同用户的需求,现有技术还提出了 基于B/S (浏览器/服务器)架构的Web即时通讯方式(即纯Web的即时 通讯,不包括在浏览器中嵌入类似ActiveX控件的伪B/S,因为它实际上 还是一个C/S),这种即时通讯方式不需要安装客户端软件,即可在Web 浏览器中获得基础的IM服务,具有Web产品固有的便利性特点,又保 持了用户在客户端软件的 一 些操作习惯。访问者在浏览网页的过程中, 只需要触发网页上的即时通讯标识,就能够进行实时的交流,而无需下 载插件或软件,是基于C/S的即时通讯方式的有力补充,目前在诸多服 务网站中得到了广泛应用。
这种基于Web的即时通讯方式主要有以下特性采用Http作为主要 的通信协议,只能由客户端(Web浏览器)主动联系服务器,而服务器 无法主动联系特定的客户。因而导致客户与客户之间无法基于Web实现 直接的P2P,并且,客户与客户之间的消息交互是"伪实时"的,所有的消 息都必须通过服务器进行被动地中转。比如,当客户A要把某个聊天消 息发送给B时,它首先将消息提交给服务器,因为服务器无法主动找到B, 所以服务器需要暂存这个消息(比如放入数据库),等到B来请求时,才能将这个消息转发给B。
对此,现有技术的处理方式为(1 )在客户端使用Ajax技术实现页 面局部刷新;(2)客户端使用定时器不断的询问服务器是否有新的通知。 如果有,则向服务器提取这些信息。然而,以上处理仍存在以下缺陷
A、 需要客户端定时向服务器访问是否有新的通知,则每个客户端为 保持与消息服务器的连接都要占用 一定资源;
B、 为保证即时性, 一般客户端向消息服务器发起请求的时间间隔不
能设定得太小,当总在线人数较多时,将会产生较多的并发请求,网络 和数据库的压力非常大;
C、 即使采用定时向服务器轮询的机制,仍然会造成消息只能在一定 时间间隔后才能发送,即时性差。
因此,现阶段需要本领域技术人员迫切解决的一个技术问题就是, 如何提供一种创新的基于Web的即时通讯方法,用以节省资源、緩解系 统压力、提高消息传输的即时性,使用户获得更好体验。
发明内容
本发明所要解决的技术问题是提供一种基于Web的即时通讯方法, 用以节省资源、緩解系统压力、提高消息传输的即时性,使用户获得更 好体验。
本发明的另 一个目的是提供了 一种基于Web的即时通讯系统,用以 保证上述方法在实际中的实现及应用。
为了解决上述技术问题,本发明实施例公开了一种基于Web的即时 通i凡方法,包4舌
在消息服务器中生成登录即时通讯系统用户的相应会话,所述会话 包括对应用户的客户端信息;
接收发送端用户向接收端用户提交的即时消息,并保存至所述消息 服务器的内存中;
提取所述接收端用户会话中相应的客户端信息以定位目标客户端, 并将所述即时消息发送至所述目标客户端;
在所述目标客户端的浏览器中展示所述即时消息的提示信息。
5优选的,所述的方法,还包括
所述接收端用户触发所述提示信息获得即时消息。
优选的,所述的方法,还包括
将一定时间间隔内的消息服务器内存中的数据,转存至所述消息服 务器的历史数据库中。
优选的,所述的方法,还包括 在所述历史数据库中查询用户已发送的历史消息。 优选的,所述的方法,还包括 依据所述会话实时更新当前在线用户的信息。 优选的,所述内存为内存存储段。
优选的,所述客户端信息包括用户标识、客户端IP和端口信息。
本发明实施例还公开了 一种基于Web的即时通讯装置,包括
会话注册模块,用于在消息服务器中生成登录即时通讯系统用户的 相应会话,所述会话包括对应用户的客户端信息;
消息接收保存模块,用于接收发送端用户向接收端用户提交的即时 消息,并保存至所述消息服务器的内存中;
目标定位发送模块,用于提取所述接收端用户会话中相应的客户端 信息以定位目标客户端,并将所述即时消息发送至所述目标客户端;
提示信息展示模块,用于在所述目标客户端的浏览器中展示所述即 时消息的提示信息。
优选的,所述的装置,还包括
即时消息获取模块,用于根据所述接收端用户触发所述提示信息获 得即时消息。
优选的,所述的装置,还包括
数据库转存模块,用于将一定时间间隔内的消息服务器内存中的数 据,转存至所述消息服务器的历史数据库中。 优选的,所述的装置,还包括
历史消息查询模块,用于在所述历史数据库中查询用户已发送的历 史消息。
优选的,所述的装置,还包括在线信息更新模块,用于依据所述会话实时更新当前在线用户的信
台
优选的,所述会话注册模块、消息接收保存模块和目标定位发送模 块位于消息服务器端。
与现有技术相比,本发明具有以下优点
首先,本发明通过在消息服务器端注册所有登录后用户的客户端 Session,当消息服务器端接收到即时消息后,即可根据相应的客户端 Session定位目标客户端并主动推送消息。由于这种消息服务器主动推送 的机制,可以有效避免即时消息的延迟,提高了消息发送的即时性和准 确性;并且可以有效减少服务器、客户端、网络带宽的资源占用,緩解 了系统压力,使用户获得更好的使用体验;
再者,本发明在消息服务器的内存中开辟一段专属存储段,发送客 户端发送的即时消息首先写入该内存段中,从而提高了即时消息的响应 性能;
此外,本发明还可以将所述内存段中的数据定期存入消息服务器的 历史数据库,进一步提升了系统的性能;
最后,本发明对于服务提供商来说,技术实现简单,无技术障碍, 无特殊保密算法,成本和风险较低。
图1是本发明的一种基于Web的即时通讯方法实施例的流程图; 图2是本发明的一种基于Web的即时通讯装置实施例的结构框图; 图3是应用图2所示的装置实施例进行即时通讯的流程图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合 附图和具体实施方式
对本发明作进一步详细的说明。
本发明可用于众多通用或专用的计算系统环境或配置中。例如个 人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处 理器系统、包括以上任何系统或设备的分布式计算环境等等。本发明可以在由计算机执行的计算机可执行指令的 一般上下文中描 述,例如程序模块。 一般地,程序模块包括执行特定任务或实现特定抽 象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布 式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络 而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块 可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明实施例的核心构思之一在于,在消息服务器端注册所有登录
用户的客户端Session,当消息服务器端接收到即时消息后,即可才艮据相 应的客户端Session定位目标客户端并主动推送消息。由于这种消息服务 器主动推送的机制,可以有效避免即时消息的延迟,提高了消息发送的 即时性和准确性;并且可以有效减少服务器、客户端、网络带宽的资源 占用,緩解了系统压力,使用户获得更好的使用体验。
参考图1,示出了本发明的一种基于Web的即时通讯方法实施例的 流程图,可以包括以下步骤
步骤101、在消息服务器中生成登录即时通讯系统用户的相应会话, 所述会话可以包括对应用户的客户端信息;
步骤102、接收发送端用户向接收端用户提交的即时消息,并保存至 所述消息服务器的内存中;
步骤103、提取所述接收端用户会话中相应的客户端信息以定位目标 客户端,并将所述即时消息发送至所述目标客户端;
步骤104、在所述目标客户端的浏览器中展示所述即时消息的提示信
自
需要说明的是,本发明主要涉及基于纯Web的即时通讯方法,即基 于B/S架构,无需在浏览器中嵌入类似ActiveX控件的方式。目前,本领 域」忮术人员对于这种纯Web的即时通讯方式有以下两点共识1、由于 Web的特性,这种基于Web的IM不可避免地需要采用Http (Hypertext Transfer Protocol,超文本传输协议)是作为主要的通信协议,使用Http 的好处是能轻易的穿过防火墙(大多数网关都默认开放http的80端口 ); 2、单向性。只有客户端(Web浏览器)能主动去联系服务器,而服务端无法主动联系特定的客户。在现有技术的诸多Web IM产品中,如Yahoo! Web Messenger, MSN Web Messenger、 Meeboo、 Google GTalk等,均基 于以上两点开发,通常在以下方面作出改进
(1)在客户端使用Ajax技术实现页面局部刷新。
(2 )在客户端使用定时器不断的询问服务器是否有新的通知。
显然,目前在Web应用领域中,技术人员受到Web IM只能由客户 端发请求获取消息的限制,以使得对于WebIM技术的开发局限于改进客 户端性能以提高即时通讯性能,而不考虑对消息服务器的改进。而本发 明恰恰克服了现有技术的这种技术偏见,提出了一种全新的Web即时通 讯机制,在这种即时通讯过程中,是由消息服务器向目标客户端主动推 送消息,颠覆了以往的客户端定时获取的方式,由于本发明不需要客户 端定时向服务器访问是否有新的通知,所以节省了每个客户端为保持与 消息服务器的连接所要占用的资源;并且,由于本发明不受客户端向消 息服务器定时发起请求的限制,即使产生较多的并发请求,也不会严重 增加网络和数据库的压力;再者,由于本发明主动实时将其接收到的消 息推送至目标客户端,所以不会造成现有技术中消息只能在一定时间间 隔后才能发送的情况,有效提高了消息传输的即时性。
事实上,本领域技术人员在基于上述单向性的特点设计Web IM时, 长期以来都无法解决以下问题(1 )客户与客户之间无法实现直接的P2P。 因为基于Web时, 一个客户无法直接"找到"另一个客户,就更别提NAT (网络地址转换或网络地址翻译)穿透了。 (2)客户与客户之间的消息 交互是"伪实时"的,所有的消息都必须通过服务器进行"被动"地中转。比 如,当客户A要把某个聊天消息发送给B时,它首先将消息提交给服务 器,因为服务器无法主动找到B,所以服务器需要暂存这个消息(比如放 入数据库),等到B来请求时,才能将这个消息转发。可以看出,本发明 的消息服务器主动推送机制同时还解决了这个人们一直渴望解决但始终 未能获得成功的技术难题。
所谓"会话"即Session, Session是用于保持状态的基于Web服务器 的方法。Session允许通过将对象存储在Web服务器的内存中在整个用户 会话过程中保持任何对象。Session通常用于执行以下操作存储需要在整个用户会话过程中保持其状态的信息,例如登录信息或用户浏览Web 应用程序时需要的其它信息;存储只需要在页重新加载过程中或按功能 分组的 一组页之间保持其状态的对象。Session的作用就是它在Web服务 器上保持用户的状态信息以供在任何时间从任何页访问。因为浏览器不 需要存储任何这种信息,所以可以使用任何浏览器,即使是像PDA或 手机这样的浏览器设备。
可以理解的是,本发明的session是针对与某个用户的浏览器以及通 过其当前窗口打开的任何窗口具有针对性的用户信息存储机制,是一种 服务器端的机制,例如,可以采用$—SESSION['keys'] = $keys或者, session—register('kayes')等形式的代码注册session,当然,本发明对注册 的方式不作限制。
在消息服务器端注册所有登录用户的session,以记录登录用户的客 户端信息后,即可依据存在的session实时更新当前在线用户的信息,也 就是说,登录用户可以实时获取即时通讯系统中其它在线用户的信息。 某个登录用户A还可以选择另一个在线用户B发送即时消息。此时,消 息服务器会接收用户A发送的即时消息,并存储至其内存中,在实际中, 所述内存中存储的信息可以包括发送用户、接收用户、消息内容、发送 时间等内容,当然还可以采用固定格式封装。优选的,所述内存可以为 内存存储段,即在内存中专门开辟的存储段。在本发明中,分段的概念 是建立在最通常被程序员结构化程序所用模块的基础上的——即逻辑上 的一组代码。采用段式存储分配方法,每一个作业被分为很多个不同尺 寸的段,每一个模块都包含很多相关的功能。在这种情况下,消息服务 器可以根据Session定位用户B的客户端信息,并将所述即时消息发送至 用户B的浏览器中;用户B的客户端登录后运行一段Javascript脚本,该 脚本能够接收消息服务器发送过来的即时消息并能够在用户B的浏览器 中给出相应的提示信息。这种处理方式有利于在目标客户端在线时将消 息推送到目标客户端的浏览器上,而当目标客户端不在线时,则可以选 择发送离线消息或者将即时消息转发到短信息平台上。
优选的,本实施例还可以包括步骤
所述接收端用户触发所述提示信息获得即时消息。例如,用户B点击所述提示信息,即可查看相应的消息详情。 优选的,本发明还可以将一定时间间隔内的所述消息服务器内存中 的数据,转存至所述消息服务器的历史数据库中,以方便查询用户已发
送的历史消息。
以实现企业员工内部的即时通讯过程为例
步骤Sl、用户登录即时通讯系统,在消息服务器端注册所有登录后 用户的Session,包括用户名、姓名、组织机构、登录客户端IP和端口 等;
步骤S2、用户A获取依赖于Session生成的当前在线人员信息,选
择接收用户B,输入即时消息;
步骤S3、消息服务器接收所述即时消息,并保存在其内存中;
在实际中,消息服务器还可以定期将内存中的信息转存到历史数据
库中,以便用户查询历史信息。
步骤S4、依据注册的Session中用户B的客户端信息定位目标客户
端,并将即时消息数据推送到用户B的浏览器中;
步骤S5、用户B的客户端监听到即时消息,显示即时消息提示信息。 步骤S6、用户B触发提示信息,查看该消息的详情。 应用本发明的企业员工即时通讯系统,可以实时统计显示人员在线
情况,并以树形结构展现组织机构,方便了发送目标对象的定位;当目
标对象不在线时,还可以选择发送离线消息或短信,避免了即时信息的丢失。
需要说明的是,对于前述的方法实施例,为了简单描述,故将其都 表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不 受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他 顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描 述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明 所必须的。
参考图2,示出了本发明的一种基于Web的即时通讯装置实施例的 结构框图,可以包括以下模块会话注册模块201,用于在消息服务器中生成登录即时通讯系统用户
的相应会话,所述会话可以包括对应用户的客户端信息;
消息接收保存模块202,用于接收发送端用户向接收端用户提交的即 时消息,并保存至所述消息服务器的内存中;
目标定位发送模块203,用于提取所述接收端用户会话中相应的客户 端信息以定位目标客户端,并将所述即时消息发送至所述目标客户端;
若所述目标客户端的用户不在线,还可以发送离线消息或将即时消 息发送转发至短信息平台。
提示信息展示模块204,用于在所述目标客户端的浏览器中展示所述 即时消息的提示信息。
本发明中所述客户端可以监听、接收并解析目标定位发送模块发送 的数据,还可以统计当前到达客户端的即时消息数量。若客户端登录后, 可以通过运行一段Javascript脚本,以接收消息服务器发送的消息并在浏 览器中给出相应的提示信息。
优选的,本实施中还可以包括
即时消息获取模块205,用于根据所述接收端用户触发所述提示信息 获得即时消息。
优选的,本实施中还可以包括
数据库转存模块,用于将一定时间间隔内的消息服务器内存中的数 据,转存至所述消息服务器的历史数据库中。
历史消息查询模块,用于在所述历史数据库中查询用户已发送的历 史消息。
优选的,本实施中还可以包括 ' 在线信息更新模块,用于依据所述会话实时更新当前在线用户的信
自
优选的,本实施中所述会话注册模块、消息接收保存模块和目标定 位发送模块可以位于消息服务器端。
参考图3,示出了应用图2所示的装置实施例进行即时通讯的流程图, 可以包括以下步骤
步骤301 、会话注册模块在消息服务器中生成登录即时通讯系统用户的相应会话;
所述会话可以包括对应用户的客户端信息;
步骤302、消息接收保存模块接收发送端用户向接收端用户提交的即 时消息,并保存至所述消息服务器的内存中;
步骤303、目标定位发送模块提取所述接收端用户会话中相应的客户 端信息以定位目标客户端,并将所述即时消息发送至所述目标客户端;
步骤304、提示信息展示模块在所述目标客户端的浏览器中展示所述 即时消息的提示信息;
步骤305、即时消息获取模块根据所述接收端用户触发所述提示信息 获得即时消息。
由于图2所示的装置实施例都可以对应适用于前述的方法实施例中, 所以描述4交为简略,未详尽之处可以参见本i兌明书前面相应部分的描述。
以上对本发明所提供的一种基于Web的即时通讯方法和一种基于 Web的即时通讯装置进行了详细介绍,本文中应用了具体个例对本发明 的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本 发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本 发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述, 本说明书内容不应理解为对本发明的限制。
权利要求
1、一种基于Web的即时通讯方法,其特征在于,包括在消息服务器中生成登录即时通讯系统用户的相应会话,所述会话包括对应用户的客户端信息;接收发送端用户向接收端用户提交的即时消息,并保存至所述消息服务器的内存中;提取所述接收端用户会话中相应的客户端信息以定位目标客户端,并将所述即时消息发送至所述目标客户端;在所述目标客户端的浏览器中展示所述即时消息的提示信息。
2、 如权利要求l所述的方法,其特征在于,还包括 所述接收端用户触发所述提示信息获得即时消息。
3、 如权利要求l或2所述的方法,其特征在于,还包括将 一 定时间间隔内的消息服务器内存中的数据,转存至所述消息服 务器的历史数据库中。
4、 如权利要求3所述的方法,其特征在于,还包括 在所述历史数据库中查询用户已发送的历史消息。
5、 如权利要求l所述的方法,其特征在于,还包括 依据所述会话实时更新当前在线用户的信息。
6、 如权利要求l所述的方法,其特征在于,所述内存为内存存储段。
7、 如权利要求l所述的方法,其特征在于,所述客户端信息包括用 户标识、客户端IP和端口信息。
8、 一种基于Web的即时通讯装置,其特征在于,包括会话注册模块,用于在消息服务器中生成登录即时通讯系统用户的 相应会话,所述会话包括对应用户的客户端信息;消息接收保存模块,用于接收发送端用户向接收端用户提交的即时 消息,并保存至所述消息服务器的内存中;目标定位发送模块,用于提取所述接收端用户会话中相应的客户端 信息以定位目标客户端,并将所述即时消息发送至所述目标客户端;提示信息展示模块,用于在所述目标客户端的浏览器中展示所述即时消息的提示信息。
9、 如权利要求8所述的装置,其特征在于,还包括即时消息获取模块,用于根据所述接收端用户触发所述提示信息获 得即时消息。
10、 如权利要求8或9所述的装置,其特征在于,还包括 数据库转存模块,用于将一定时间间隔内的消息服务器内存中的数据,转存至所述消息服务器的历史数据库中。
11、 如权利要求IO所述的装置,其特征在于,还包括 历史消息查询模块,用于在所述历史数据库中查询用户已发送的历史消息。
12、 如权利要求8所述的装置,其特征在于,还包括在线信息更新模块,用于依据所述会话实时更新当前在线用户的信自
13、 如权利要求8所述的装置,其特征在于,所述会话注册模块、 消息接收保存模块和目标定位发送模块位于消息服务器端。
全文摘要
本发明公开了一种基于Web的即时通讯方法,包括在消息服务器中生成登录即时通讯系统用户的相应会话,所述会话包括对应用户的客户端信息;接收发送端用户向接收端用户提交的即时消息,并保存至所述消息服务器的内存中;提取所述接收端用户会话中相应的客户端信息以定位目标客户端,并将所述即时消息发送至所述目标客户端;在所述目标客户端的浏览器中展示所述即时消息的提示信息。本发明可以节省资源、缓解系统压力、提高消息传输的即时性,使用户获得更好体验。
文档编号H04L12/58GK101299731SQ20081010625
公开日2008年11月5日 申请日期2008年5月9日 优先权日2008年5月9日
发明者刘建明, 崔丙锋, 王继业, 范鹏展, 陈德胜, 魏晓菁 申请人:国网信息通信有限公司