聊天服务器系统、构建聊天服务器系统的方法以及聊天系统的制作方法

文档序号:7767161阅读:264来源:国知局
专利名称:聊天服务器系统、构建聊天服务器系统的方法以及聊天系统的制作方法
技术领域
本发明涉及网络聊天技术,特别是涉及一种聊天服务器系统、构建聊天服务器系 统的方法以及聊天系统。
背景技术
网络聊天室是在网络上由两个或两个以上的用户组成的会话室,以供用户间通过 文字与符号进行实时交谈、聊天的场所。一种提供网络聊天室功能的聊天系统包括客户端 和ffi服务器,用户通过客户端的浏览器发送http (HyperText Transfer Protocol,超义本 传输协议)请求,获取聊天室页面进行聊天;WEB服务器为客户端提供聊天服务以及进行聊天室的管理。
通常,客户端使用AJAX(Asynchronous JavaScript and XML,异步 Javakript 和 XML)结合 PHP (Hypertext Preprocesor,超级文本预处理语言)/JSP (Java Server Pages, ava服务器页面)等页面技术,具体工作方式为客户端的浏览器页面通过发送 xmlHttpRequest请求,通过http协议与TOB服务器交互,TOB服务器响应请求,返回xml数 据对象,客户端在浏览器下解析对象显示。
由于AJAX是一种局部刷新页面的技术,其可以减少页面刷新的次数,但其本质还 是基于http协议的请求-响应操作,也就是说,AJAX需要通过定时访问WEB服务器来取得 最新的数据,比如说间隔500毫秒对WEB服务器发起一次请求,不管此时TOB服务器端有没 有新的数据,均要对客户端请求进行响应,这样必然会加重WEB服务器的负担,而当WEB服 务器有数据更新的时候,其却无法主动向客户端发送,只有在收到客户端的请求时才能向 客户端发送,这样的请求-响应模式难以实现客户端高并发(即多个客户端同时向服务器 发送请求)、服务器端高访问(即服务器端同时收到多个客户端的访问)情况下的实时响 应;另外,AJAX导致客户端必须等到刷新数据的时候,才能从WEB服务器取到数据,没到刷 新的时候,客户端无法获悉WEB服务器中已更新的数据,因此,也无法保证消息实时性。
而且,将聊天室的应用服务(包括为客户端提供聊天服务,以及对聊天室管理)均 部署WEB服务器上,由其独立完成请求响应,而未根据业务需求的不同特点搭建分布式服 务,造成服务器端稳定性不可靠。
此外,就客户终端而言,还存在以下缺陷
AJAX需要由Javakript语言解析xml格式数据,而不同的浏览器对xml解析方式 的支持不一致,这样,易出现不同客户终端间的兼容性问题,例如,对于同样的xml数据,不 同客户终端间显示出不同的结果,甚至导致ml数据在某些浏览器下无法解析,从而影响 用户的使用。发明内容
有鉴于此,本发明提出一种聊天服务器系统、构建聊天服务器系统的方法以及聊天系统,所要解决的技术问题为聊天客户终端高并发的情况下,能够获得聊天服务器系统 的实时响应。
本发明的目的及解决其技术问题是采用以下技术方案来实现的。依据本发明提出 的一种聊天服务器系统,包括=SOCKET服务器,与多个聊天客户终端建立SOCKET连接,并与 所述多个聊天客户终端保持连接以向其提供聊天服务;聊天室管理服务器,用于控制管理 所述SOCKET服务器和聊天客户终端。
本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。
前述的聊天服务器系统,所述SOCKET服务器为MINA服务器。
前述的聊天服务器系统,所述MINA服务器为多个,该聊天服务器系统还包括交 换机,连接在所述多个聊天客户终端与所述多个MINA服务器之间;主JMS服务器,与所述多 个MINA服务器连接;其中,当所述MINA服务器通过所述交换机从其连接的聊天客户终端 接收的消息为私聊消息时,所述MINA服务器判断该私聊消息的接收方是否为自身连接的 聊天客户终端,若是,则将该私聊消息通过所述交换机发送至接收方;若否,则通过所述主 JMS服务器将该私聊消息发送至接收方所属的MINA服务器,并由该接收方所属的MINA服务 器通过所述交换机将该私聊消息发送至接收方。
前述的聊天服务器系统,还包括缓存服务器,用于存储每个MINA服务器所连接 的聊天客户终端信息;所述MINA服务器通过该缓存服务器判断所述私聊消息的接收方是 否为自身连接的聊天客户终端。
前述的聊天服务器系统,所述MINA服务器包括信息存储单元,用于存储与该 MINA服务器连接的聊天客户终端信息;所述MINA服务器通过该信息存储单元获取其连接 的聊天客户终端信息,以将私聊消息发送至接收方。
前述的聊天服务器系统,当所述MINA服务器从其连接的聊天客户终端接收的消 息为广播消息时,所述MINA服务器将该广播消息发送至所述主JMS服务器,并由所述主JMS 服务器将所述广播消息向MINA服务器广播,然后由MINA服务器向其所连接的聊天客户终端广播。
前述的聊天服务器系统,所述MINA服务器还用于对聊天客户终端的请求进行鉴 权。
前述的聊天服务器系统,所述主JMS服务器还用于将来自所述聊天室管理服务器 的控制命令发送至所述MINA服务器。
前述的聊天服务器系统,该聊天服务器系统还包括备份JMS服务器,用于存储所 述主JMS服务器未处理的消息,并在所述主JMS服务器出现故障时,处理未处理的消息。
本发明的目的及解决其技术问题另外还采用以下技术方案来实现。依据本发明提 出的一种构建聊天服务器系统的方法,包括以下步骤
提供SOCKET服务器,使其与多个聊天客户终端建立SOCKET连接,并与所述多个 聊天客户终端保持连接以向其提供聊天服务;提供聊天室管理服务器,以控制管理所述 SOCKET服务器和聊天客户终端。
本发明的目的及解决其技术问题另外还采用以下技术方案来实现。依据本发明提 出的一种聊天系统,其特征在于,包括前述的聊天服务器系统以及聊天客户终端。
由上述技术方案可知,本发明具有以下有益效果在聊天客户终端高并发的情况下,能够获得聊天服务器系统的实时响应。
通过以下参照附图对优选实施例的说明,本发明的上述以及其它目的、特征和优 点将更加明显。


图1为本发明一实施例提供的聊天服务器系统的框图2为本发明另一实施例提供的聊天服务器系统的框图3为本发明一实施例的连接于同一 MINA服务器的两个聊天客户终端间私聊的 流程图4为本发明一实施例的连接于不同MINA服务器的两个聊天客户终端间私聊的 流程图5为本发明一实施例的聊天客户终端发布广播消息的流程图。
具体实施方式
下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只用于举例 说明,并不用于限制本发明。
请参阅图1所示,其为本发明一实施例提供的聊天服务器系统的框图,该实施例 的聊天服务器系统1包括=SOCKET服务器11和聊天室管理服务器12。其中,SOCKET服务 器11与多个聊天客户终端13建立SOCKET连接,并与多个聊天客户终端13保持连接以向 其提供聊天服务,本领域技术人员知道基于TCP/IP协议的SOCKET (套接字)连接是比 http协议更底层的通信标准,数据通过SOCKET字节流传输,具有更高的传输速率;而且,通 过SOCKET可以建立SOCKET服务器11与聊天客户终端13的长连接,在长连接中,SOCKET服 务器11与聊天客户终端13间连接建立后一直处于连接状态。
这样,在本实施例中,SOCKET服务器11与聊天客户终端13之间的连接一旦建立, SOCKET服务器11和聊天客户终端13都可以随时向对方发送数据,例如,当SOCKET服务器 11发现某一聊天客户终端为新数据接收方的时候,便会主动向该聊天客户终端发送,而非 像http协议那样须等到该聊天客户终端的请求时,才能将新的数据向其发送,网络延迟的 减小是显而易见的,具有更高的实时性;而且,对于聊天客户终端而言,也并非向SOCKET服 务器发出请求才能接收数据,从而减轻SOCKET服务器的负担;此外,基于http协议的通信, 每条信息的发送都会包含很多冗余信息,进行符合http协议的包装,而SOCKET通信不会有 这些冗余信息,发送同样数量的字符需要传送的数据量更少,这样就节省了网络带宽,用户 感觉到的是数据的发送和接收更加迅速。因此,即使聊天客户终端高并发、聊天服务器系统 高访问的情况下,也能够获得SOCKET服务器的实时响应。
聊天室管理服务器12用于控制管理SOCKET服务器12和聊天客户终端13,其可 提供除SOCKET服务器11所提供的聊天服务外的其他所有对聊天室的管理及配置功能,例 如,维护聊天室信息,公告信息的设置;维护敏感关键词库信息;以及聊天室初始化参数维 护等。
举例而言,聊天室管理服务器12维护的一些聊天室的信息包括诸如聊天室的房 间列表、一个房间的人数等等。聊1客户终端13通过请求聊天室管理服务器12来获取这些信息,并且聊天客户终端13从聊天室管理服务器12获得一次上述信息后,就一直可以展 示在客户终端界面,因此,在一实施例中,聊天室管理服务器12与聊天客户终端13之间为 http连接。
在如图1所示的实施例中,将聊天服务和聊天室的管理分别由SOCKET服务器11 和聊天室管理服务器12来实现,使得管理服务独立于聊天服务,这样不同的功能服务,合 理分配在不同的服务器上,实现了管理与使用的分布式部署,从而提高聊天服务器系统的 稳定性。
在一实施例中,SOCKET服务器为基于 MINA(Multipurpose Infrastructurefor Network Applications,网络应用程序的通用基础框架)构造的MINA服务器,本领域技术 人员知道,MINA为现有技术中的一种网络应用程序框架,本实施例中使用其构建MINA服务 器,可具有更高的稳定性以保持与聊天客户终端的长连接。
请参阅图2所示,其为本发明另一实施例提供的聊天服务器系统的框图,本实施 例的聊天服务器系统2中,包括多个MINA服务器21以构成MINA服务器集群,聊天服务器 系统2还包括交换机22和主JMS服务器23,其中,交换机22连接在多个聊天客户终端13 与多个MINA服务器21之间,以实现负载均衡;主JMS (Java Message Service, Java消息 服务)服务器23与多个MINA服务器21连接,当某一 MINA服务器通过交换机22从其连接 的聊天客户终端接收的消息为私聊消息(即只有作为接收方的聊天客户终端能接收到的 消息)时,该MINA服务器判断该私聊消息的接收方是否为自身连接的聊天客户终端,若是, 则将该私聊消息通过交换机22发送至相应的作为接收方的聊天客户终端;若否,则通过主 JMS服务器23将该私聊消息发送至接收方所属的MINA服务器,并由该接收方所属的MINA 服务器通过交换机22将该私聊消息发送至相应的作为接收方的聊天客户终端,这样,由主 JMS服务器23实现了属于不同MINA服务器的聊天客户终端间的消息同步。
在一实施例中,该聊天服务器系统还包括缓存服务器M,用于存储每个MINA服 务器所连接的聊天客户终端信息;MINA服务器可通过该缓存单元M判断上述私聊消息的 接收方是否为自身连接的聊天客户终端,在本实施例中,将聊天客户终端信息保存在缓存 服务器M中,则不需要使用数据库,因为用户通过聊天客户终端13登录了聊天室,就会有 自己的信息,一旦退出,这个信息就不再需要,下次再登录,就是新的信息,这些信息是暂时 的,所以,不需要数据库来保存,而使用缓存服务器M来保存。缓存服务器M还可保存MINA 服务器集群的其他共享信息,例如,每个聊天室房间的用户基本信息(如用户ID、用户昵 称、所属房间号等)。聊天室管理服务器12也可从该缓存服务器M中获取所需信息。聊天 客户终端信息例如为当前用户的会话状态,客户终端IP、用户ID,用户所属聊天室ID等。
优选地,缓存服务器M由高性能的分布式内存对象缓存系统Memcached来实现, 本实施例中,将高性能系统Memcached用作内存服务,具有高效和运行稳定的优点。
MINA服务器21可包括信息存储单元,用于存储与该MINA服务器连接的聊天客 户终端信息;MINA服务器可通过该信息存储单元获取其连接的聊天客户终端信息,以将私 聊信息发送至相应的聊天客户终端。具体地,信息存储单元可为在MINA服务器21中开辟 的一块内存,以存储其连接的聊天客户终端的聊天客户终端信息,聊天客户终端信息例如 包括保存了当前用户会话状态的用户会话信息,会话状态包含用户的IP等一些信息,可以 通过会话信息找到所属的客户终端。7
在另外的一些实施例中,MINA服务器还用于对聊天客户终端的请求进行鉴权(例 如判断是否为黑名单用户,是否禁止其发言等),以决定是否对其进行后续处理;所述主 JMS服务器还用于将来自所述聊天室管理服务器的控制命令发送至所述MINA服务器,其中 控制命令例如为踢人、禁言或关闭等。
在图2所示的实施例中,通过交换机连接MINA服务器集群,能够根据聊天服务需 要增加或减少MINA服务器的数量,这样,在无需重新设计该聊天服务器系统架构的情况 下,便可根据实际情况对聊天服务器系统进行横向扩展,从而提高了结构的可扩展性。
聊天服务器系统还可包括备份JMS服务器25,用于存储所述主JMS服务器未处 理的消息,并在所述主JMS服务器出现故障时,处理未处理的消息,实现聊天服务器系统的 热备份,并提高结构的稳定性。
请参阅图3所示,其为本发明一实施例的连接于同一MINA服务器的两个聊天客户 终端间私聊的流程图,在本实施例中,作为发送方的聊天客户终端A连接于MINA服务器A, 作为接收方的聊天客户终端B也连接于MINA服务器A,聊天客户终端A欲发送私聊消息至 聊天客户终端B,执行步骤如下
Sll 聊天客户终端A发送私聊消息至MINA服务器A,该私聊消息中包含接收方的 ID ;
S12 =MINA服务器A根据接收方的ID从缓存服务器中获取接收方所属的MINA服 务器;
S13 缓存服务器将接收方所属的MINA服务器返回给MINA服务器A (在本实施例 中,接收方所属的MINA服务器也为MINA服务器A);
S14 :MINA服务器A向聊天客户终端A返回发送结果(成功或失败);
S15 :MINA服务器A根据接收方的ID从其内部的信息存储单元获取接收方信息, 例如IP信息;
S16 信息存储单元将接收方信息返回给MINA服务器A,MINA服务器A由此获知接 收方为聊天客户终端B;
S17 =MINA服务器A将私聊信息发送给聊天客户终端B。
请参阅图4所示,其为本发明一实施例的连接于不同MINA服务器的两个聊天客户 终端间私聊的流程图,在本实施例中,作为发送方的聊天客户终端A连接于MINA服务器A, 作为接收方的聊天客户终端B连接于MINA服务器B,聊天客户终端A欲发送私聊消息至聊 天客户终端B,执行步骤如下
S21 聊天客户终端A发送私聊消息至MINA服务器A,该私聊消息中包含接收方的 ID ;
S22 =MINA服务器A根据接收方的ID从缓存服务器中获取接收方所属的MINA服 务器;
S23 缓存服务器将接收方所属的MINA服务器返回给MINA服务器A (在本实施例 中,接收方所属的MINA服务器为MINA服务器B);
S24 =MINA服务器A发送私聊消息到主JMS服务器;
在本实施例中,每个MINA服务器在JMS服务器上分别对应一个JMS技术中的 QUEUE (队列),以实现消息的顺序处理,例如,MINA服务器A发送私聊消息到接收方所属MINA服务器(即MINA服务器B)对应的QUEUE。
S25 :MINA服务器A向聊天客户终端A返回发送结果(成功或失败);
S26 JMS服务器传递私聊消息到接收方所属MINA服务器(即MINA服务器B);
S27 =MINA服务器B根据接收方的ID从其内部的信息存储单元获取接收方信息, 例如IP信息
S28 信息存储单元将接收方信息返回给MINA服务器B,MINA服务器B由此获知接 收方为聊天客户终端B;
S29 =MINA服务器B将私聊信息发送给聊天客户终端B。
在本发明的再一实施例中,当所述MINA服务器从其连接的聊天客户终端接收的 消息为广播消息时,所述MINA服务器将该广播消息发送至JMS服务器,并由JMS服务器将 所述广播消息向MINA服务器广播,然后由MINA服务器向其所连接的聊天客户终端广播。
其中,广播消息可为某一聊天客户终端向所有聊天客户终端发送的消息,也可为 某一聊天客户终端向其所属的聊天室房间内的所有用户发送消息,即群聊。
请参阅图5所示,其为本发明一实施例的聊天客户终端发布广播消息的流程图, 在本实施例中执行步骤如下
S31 聊天客户终端发送广播消息至MINA服务器;
S32 =MINA服务器向聊天客户终端返回发送结果(成功或失败);
S33 =MINA服务器A同步广播消息到JMS服务器;
在本实施例中,通过JMS服务器发布广播消息由JMS技术中的TOPIC(主题)对象 实现。
S34 JMS服务器读取TOPIC,下发广播消息至所有MINA服务器;
S35 :MINA服务器从其自身的信息存储单元获取各聊天客户终端信息,例如IP信 息;
S36:各MINA服务器根据客户终端信息,将广播消息发布至客户终端,具体而言, 如果该广播消息是发送到所有聊天客户终端的,则MINA服务器将该广播消息发布至所有 客户终端;如果该广播消息是发送到某一聊天室房间的,则MINA服务器会将该广播消息发 送给属于该聊天室房间的所有客户终端。
本发明的实施例还提供了一种构建聊天服务器系统的方法,包括以下步骤提供 SOCKET服务器,使其与多个聊天客户终端建立SOCKET连接,并与所述多个聊天客户终端保 持连接以向其提供聊天服务;提供聊天室管理服务器,以控制管理所述SOCKET服务器和聊 天客户终端。
这种构建聊天服务器系统的方法,可以实现在聊天客户终端高并发、高访问的情 况下,依然能获得SOCKET服务器的实时响应;而且这种将不同的功能服务,合理分配在不 同的服务器上,实现了管理与使用的分布部署,能够提高聊天服务器系统的稳定性。
进一步地,本发明的实施例还提供了一种聊天系统,其包括如前所述的聊天服务 器系统以及聊天客户终端。
可以看出,本实施例提供的聊天系统,可以实现在聊天客户终端高并发、高访问的 情况下,依然能获得SOCKET服务器的实时响应;而且这种聊天服务器系统将不同的功能服 务,合理分配在不同的服务器上,实现了管理与使用的分布部署,能够提高聊天服务器系统的稳定性。
虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是说明和示 例性、而非限制性的术语。由于本发明能够以多种形式具体实施而不脱离发明的精神或实 质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神 和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权 利要求所涵盖。
权利要求
1.一种聊天服务器系统,其特征在于,包括SOCKET服务器,与多个聊天客户终端建立SOCKET连接,并与所述多个聊天客户终端保 持连接以向其提供聊天服务;聊天室管理服务器,用于控制管理所述SOCKET服务器和聊天客户终端。
2.根据权利要求1所述的聊天服务器系统,其特征在于,所述SOCKET服务器为MINA服 务器。
3.根据权利要求2所述的聊天服务器系统,其特征在于,所述MINA服务器为多个,该聊 天服务器系统还包括;交换机,连接在所述多个聊天客户终端与所述多个MINA服务器之间;主JMS服务器,与所述多个MINA服务器连接;其中,当所述MINA服务器通过所述交换机从其连接的聊天客户终端接收的消息为私 聊消息时,所述MINA服务器判断该私聊消息的接收方是否为自身连接的聊天客户终端,若 是,则将该私聊消息通过所述交换机发送至接收方;若否,则通过所述主JMS服务器将该私 聊消息发送至接收方所属的MINA服务器,并由该接收方所属的MINA服务器通过所述交换 机将该私聊消息发送至接收方。
4.根据权利要求3所述的聊天服务器系统,其特征在于,还包括缓存服务器,用于存储每个MINA服务器所连接的聊天客户终端信息;所述MINA服务器通过该缓存服务器判断所述私聊消息的接收方是否为自身连接的聊 天客户终端。
5.根据权利要求3所述的聊天服务器系统,其特征在于,所述MINA服务器包括信息存储单元,用于存储与该MINA服务器连接的聊天客户终端信息;所述MINA服务器通过该信息存储单元获取其连接的聊天客户终端信息,以将私聊消 息发送至接收方。
6.根据权利要求3所述的聊天服务器系统,其特征在于,当所述MINA服务器从其连接 的聊天客户终端接收的消息为广播消息时,所述MINA服务器将该广播消息发送至所述主 JMS服务器,并由所述主JMS服务器将所述广播消息向MINA服务器广播,然后由MINA服务 器向其所连接的聊天客户终端广播。
7.根据权利要求3所述的聊天服务器系统,其特征在于,所述MINA服务器还用于对聊 天客户终端的请求进行鉴权。
8.根据权利要求3所述的聊天服务器系统,其特征在于,所述主JMS服务器还用于将来 自所述聊天室管理服务器的控制命令发送至所述MINA服务器。
9.根据权利要求3所述的聊天服务器系统,其特征在于,该聊天服务器系统还包括备份JMS服务器,用于存储所述主JMS服务器未处理的消息,并在所述主JMS服务器出现故障时,处理未处理的消息。
10.一种构建聊天服务器系统的方法,其特征在于,包括以下步骤提供SOCKET服务器,使其与多个聊天客户终端建立SOCKET连接,并与所述多个聊天客 户终端保持连接以向其提供聊天服务;提供聊天室管理服务器,以控制管理所述SOCKET服务器和聊天客户终端。
11.一种聊天系统,其特征在于,包括根据权利要求1-9中任一项所述的聊天服务器系统以及聊天客户终端。
全文摘要
本发明公开了一种聊天服务器系统、构建聊天服务器系统的方法以及聊天系统,其中该聊天服务器系统,包括SOCKET 服务器,与多个聊天客户终端建立SOCKET连接,并与所述多个聊天客户终端保持长连接以向其提供聊天服务;聊天室管理服务器,用于控制管理所述SOCKET服务器和聊天客户终端。本发明在聊天客户终端高并发的情况下,也能够获得聊天服务器系统的实时响应。
文档编号H04L12/58GK102045270SQ20101056824
公开日2011年5月4日 申请日期2010年11月30日 优先权日2010年11月30日
发明者王硕 申请人:北京迅捷英翔网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1