一种配置聊天客户终端的方法及装置、聊天客户终端转让专利

申请号 : CN201010568250.7

文献号 : CN102118325B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王硕

申请人 : 北京迅捷英翔网络科技有限公司

摘要 :

本发明公开了一种配置聊天客户终端的方法及装置、聊天客户终端,该方法包括以下步骤:SOCKET连接设置步骤,设置聊天客户终端,使其与聊天服务器系统之间建立SOCKET连接,并保持与所述聊天服务器系统的连接。本发明在聊天客户端高并发的情况下,也能够获得聊天服务器端的实时响应。

权利要求 :

1.一种配置聊天客户终端的方法,其特征在于,包括以下步骤:

SOCKET连接设置步骤,设置聊天客户终端,使其与聊天服务器系统之间建立SOCKET连接,并保持与所述聊天服务器系统的连接;其中,所述聊天服务器系统包括:与所述聊天客户终端建立并保持SOCKET连接的SOCKET服务器;以及用于控制管理所述SOCKET服务器和聊天客户终端的聊天室管理服务器;该方法还包括:管理连接设置步骤,设置所述聊天客户端,使其与所述聊天室管理服务器建立连接;

其中,所述SOCKET服务器为MINA服务器;所述聊天客户终端为多个,且所述MINA服务器为多个;该方法还包括:交换机连接设置步骤,设置所述多个聊天客户终端,使其通过交换机与所述多个MINA服务器之间建立连接;

其中,当所述MINA服务器通过所述交换机从其连接的聊天客户终端接收的消息为私聊消息时,所述MINA服务器判断该私聊消息的接收方是否为自身连接的聊天客户终端,若是,则通过所述交换机将该私聊消息发送至该私聊消息的接收方;若否,则通过JMS服务器将该私聊消息发送至接收方所属的MINA服务器,并由该接收方所属的MINA服务器通过所述交换机将该私聊消息发送至该私聊消息的接收方。

2.根据权利要求1所述的配置聊天客户终端的方法,其特征在于,所述MINA服务器包括信息存储单元,该方法还包括:MINA存储设置步骤,设置所述聊天客户终端,使所述聊天客户终端的信息存储在所述信息存储单元中,从而所述MINA服务器通过所述信息存储单元获取其连接的聊天客户终端的信息,以将私聊信息发送至接收方。

3.根据权利要求1所述的配置聊天客户终端的方法,其特征在于,所述聊天服务器系统还包括缓存服务器,该方法还包括:缓存设置步骤,设置所述聊天客户终端,使所述聊天客户终端信息存储在所述缓存服务器中,从而使所述MINA服务器通过所述缓存服务器判断所述私聊消息的接收方是否为自身连接的聊天客户终端。

说明书 :

一种配置聊天客户终端的方法及装置、聊天客户终端

技术领域

[0001] 本发明涉及网络聊天技术,特别是涉及一种配置聊天客户终端的方法及装置、聊天客户终端。

背景技术

[0002] 网络聊天室是在网络上由两个或两个以上的用户组成的会话室,以供用户间通过文字与符号进行实时交谈、聊天的场所。一种提供网络聊天室功能的聊天系统包括客户端和WEB服务器,用户通过客户端的浏览器发送http(HyperText Transfer Protocol,超文本传输协议)请求,获取聊天室页面进行聊天;WEB服务器为客户端提供聊天服务以及进行聊天室的管理。
[0003] 通常,客户端使用AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)结合PHP(Hypertext Preprocessor,超级文本预处理语言)/JSP(Java Server Pages,JAVA服务器页面)等页面技术,具体工作方式为:客户端的浏览器页面通过发送xmlHttpRequest请求,通过http协议与WEB服务器交互,WEB服务器响应请求,返回xml数据对象,客户端在浏览器下解析对象显示。
[0004] 由于AJAX是一种局部刷新页面的技术,其可以减少页面刷新的次数,但其本质还是基于http协议的请求-响应操作,也就是说,AJAX需要通过定时访问WEB服务器来取得最新的数据,比如说间隔500毫秒对WEB服务器发起一次请求,不管此时WEB服务器端有没有新的数据,均要对客户端请求进行响应,这样必然会加重WEB服务器的负担,而当WEB服务器有数据更新的时候,其却无法动向客户端发送,只有在收到客户端的请求时才能向客户端发送,这样的请求-响应模式难以实现客户端高并发(即多个客户端同时向服务器发送请求)、服务器端高访问(即服务器端同时收到多个客户端的访问)情况下的实时响应;另外,AJAX导致客户端必须等到刷新数据的时候,才能从WEB服务器取到数据,没到刷新的时候,客户端无法获悉WEB服务器中已更新的数据,因此,也无法保证消息实时性。
[0005] 而且,将聊天室的应用服务(包括为客户端提供聊天服务,以及对聊天室管理)均部署WEB服务器上,由其独立完成请求响应,而未根据业务需求的不同特点搭建分布式服务,造成服务器端稳定性不可靠。
[0006] 此外,就客户端而言,还存在以下缺陷:
[0007] AJAX需要由JavaScript语言解析xml格式数据,而不同的浏览器对xml解析方式的支持不一致,这样,易出现不同客户端间的兼容性问题,例如,对于同样的xml数据,不同客户端间显示出不同的结果,甚至导致xml数据在某些浏览器下无法解析,从而影响用户的使用;另外,由于客户端使用的是AJAX和一般页面技术的整合,其页面显示效果不够丰富多彩,特效效果不明显,用户的体验感觉难以提高。

发明内容

[0008] 有鉴于此,本发明提出一种配置聊天客户终端的方法及聊天客户终端,所要解决的技术问题为:聊天客户终端高并发的情况下,能够获得聊天服务器系统的实时响应。
[0009] 本发明的目的及解决其技术问题是采用以下技术方案来实现的。依据本发明提出的一种配置聊天客户终端的方法,包括以下步骤:SOCKET连接设置步骤,设置聊天客户终端,使其与聊天服务器系统之间建立SOCKET连接,并保持与所述聊天服务器系统的连接。
[0010] 本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。
[0011] 前述的配置聊天客户终端的方法,所述聊天服务器系统包括:与所述聊天客户终端建立并保持SOCKET连接的SOCKET服务器;以及用于控制管理所述SOCKET服务器和聊天客户终端的聊天室管理服务器;该方法还包括:管理连接设置步骤,设置所述聊天客户端,使其与所述聊天室管理服务器建立连接。
[0012] 前述的配置聊天客户终端的方法,所述SOCKET服务器为MINA服务器。
[0013] 前述的配置聊天客户终端的方法,所述聊天客户终端为多个,且所述MINA服务器为多个;该方法还包括:交换机连接设置步骤,设置所述多个聊天客户终端,使其通过交换机与所述多个MINA服务器之间建立连接;其中,当所述MINA服务器通过所述交换机从其连接的聊天客户终端接收的消息为私聊消息时,所述MINA服务器判断该私聊消息的接收方是否为自身连接的聊天客户终端,若是,则通过所述交换机将该私聊消息发送至该私聊消息的接收方;若否,则通过JMS服务器将该私聊消息发送至接收方所属的MINA服务器,并由该接收方所属的MINA服务器通过所述交换机将该私聊消息发送至该私聊消息的接收方。
[0014] 前述的配置聊天客户终端的方法,所述MINA服务器包括信息存储单元,该方法还包括:MINA存储设置步骤,设置所述聊天客户终端,使所述聊天客户终端的信息存储在所述信息存储单元中,从而所述MINA服务器通过所述信息存储单元获取其连接的聊天客户终端的信息,以将私聊信息发送至接收方。
[0015] 前述的配置聊天客户终端的方法,所述聊天服务器系统还包括缓存服务器,该方法还包括:缓存设置步骤,设置所述聊天客户终端,使所述聊天客户终端信息存储在所述缓存服务器中,从而使所述MINA服务器通过所述缓存服务器判断所述私聊消息的接收方是否为自身连接的聊天客户终端。
[0016] 本发明的目的及解决其技术问题另外还采用以下技术方案来实现。依据本发明提出的一种配置聊天客户终端的装置,包括:SOCKET连接设置单元,用于设置聊天客户终端,使其与聊天服务器系统之间建立SOCKET连接,并保持与所述聊天服务器系统的连接。
[0017] 本发明的目的及解决其技术问题另外还采用以下技术方案来实现。依据本发明提出的一种聊天客户终端,包括:SOCKET单元,用于与聊天服务器系统建立SOCKET连接。
[0018] 本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。
[0019] 前述的聊天客户终端,还包括:FLASH单元,用于向用户显示信息并接收用户输入。
[0020] 由上述技术方案可知,本发明具有以下有益效果:在聊天客户终端高并发的情况下,能够获得聊天服务器端的实时响应。
[0021] 通过以下参照附图对优选实施例的说明,本发明的上述以及其它目的、特征和优点将更加明显。

附图说明

[0022] 图1为本发明一实施例提供的配置聊天客户终端的方法流程图;
[0023] 图2为本发明一实施例提供的聊天服务器系统的框图;
[0024] 图3为本发明另一实施例提供的聊天服务器系统的框图;
[0025] 图4为本发明一实施例的连接于同一MINA服务器的两个聊天客户终端间私聊的流程图;
[0026] 图5为本发明一实施例的连接于不同MINA服务器的两个聊天客户终端间私聊的流程图;
[0027] 图6为本发明一实施例的聊天客户终端发布广播消息的流程图。

具体实施方式

[0028] 下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只用于举例说明,并不用于限制本发明。
[0029] 请参阅图1所示,其为本发明一实施例提供的配置聊天客户终端的方法流程图,包括以下步骤:SOCKET连接设置步骤,设置聊天客户终端,使其与聊天服务器系统之间建立SOCKET连接,并保持与聊天服务器系统的连接。
[0030] 本领域技术人员知道:基于TCP/IP协议的SOCKET(套接字)连接是比http协议更底层的通信标准,数据通过SOCKET字节流传输,具有更高的传输速率;而且,通过SOCKET可以建立聊天客户终端与聊天服务器系统的长连接,在长连接中,聊天服务器系统与聊天客户终端间在连接建立后会一直处于连接状态。
[0031] 这样,在本实施例中,聊天服务器系统与聊天客户终端之间的连接一旦建立,聊天服务器系统和聊天客户终端都可以随时向对方发送数据,例如,当聊天服务器系统发现某一聊天客户终端有新数据的时候,便会动向该聊天客户终端发送,而非像http协议那样须等到该聊天客户终端的请求时,才能将新的数据向其发送,网络延迟的减小是显而易见的,具有更高的实时性;而且,对于聊天客户终端而言,也并非向聊天服务器系统发出请求才能接收数据,从而减轻聊天服务器系统的负担;此外,基于http协议的通信,每条信息的发送都会包含很多冗余信息,进行符合http协议的包装,而SOCKET通信不会有这些冗余信息,发送同样数量的字符需要传送的数据量更少,这样就节省了网络带宽,用户感觉到的是数据的发送和接收更加迅速。因此,即使聊天客户终端高并发的情况下,也能够获得聊天服务器系统的实时响应。
[0032] 请参阅图2所示,其为本发明一实施例提供的聊天服务器系统的框图,该实施例的聊天服务器系统1包括:SOCKET服务器11和聊天室管理服务器12。其中,SOCKET服务器11与多个聊天客户终端13建立SOCKET连接,并与多个聊天客户终端13保持连接以向其提供聊天服务。
[0033] 聊天室管理服务器12用于控制管理SOCKET服务器12和聊天客户终端13,其可提供除SOCKET服务器11所提供的聊天服务外的其他所有对聊天室的管理及配置功能,例如,维护聊天室信息,公告信息的设置;维护敏感关键词库信息;以及聊天室初始化参数维护等。
[0034] 举例而言,聊天室管理服务器12维护的一些聊天室的信息包括诸如聊天室的房间列表、一个房间的人数等等。聊天客户终端13通过请求聊天室管理服务器12来获取这些信息,并且聊天客户终端13从聊天室管理服务器12获得一次上述信息后,就一直可以展示在客户终端界面,因此,在一实施例中,聊天室管理服务器12与聊天客户终端13之间为http连接,具体地说,聊天客户终端13向聊天室管理服务器12发送http请求,并在获取与聊天室管理服务器12的连接以得到初始化数据后,断开连接。
[0035] 在如图2所示的实施例中,将聊天服务和聊天室的管理分别由SOCKET服务器11和聊天室管理服务器12来实现,使得管理服务独立于聊天服务,这样不同的功能服务,合理分配在不同的服务器上,实现了管理与使用的分布式部署,从而提高聊天服务器系统的稳定性。
[0036] 在本实施例中,配置聊天客户终端的方法还包括管理连接设置步骤:设置所述聊天客户端,使其与所述聊天室管理服务器建立连接。
[0037] 在一实施例中,SOCKET服务器为基于MINA(Multipurpose Infrastructurefor Network Applications,网络应用程序的通用基础框架)构造的MINA服务器,本领域技术人员知道,MINA为现有技术中的一种网络应用程序框架,本实施例中使用其构建MINA服务器,可具有更高的稳定性以保持与聊天客户终端的长连接。
[0038] 请参阅图3所示,其为本发明另一实施例提供的聊天服务器系统的框图,本实施例的聊天服务器系统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服务器的聊天客户终端间的消息同步。
[0039] 在本实施例中,配置聊天客户终端的方法还包括交换机连接设置步骤:设置多个聊天客户终端,使其通过交换机与多个MINA服务器之间建立连接。
[0040] MINA服务器21可包括:信息存储单元,用于存储与该MINA服务器连接的聊天客户终端信息;MINA服务器可通过该信息存储单元获取其连接的聊天客户终端信息,以将私聊信息发送至相应的聊天客户终端。具体地,信息存储单元可为在MINA服务器21中开辟的一块内存,以存储其连接的聊天客户终端的聊天客户终端信息,聊天客户终端信息例如包括保存了当前用户会话状态的用户会话信息,会话状态包含用户的IP等一些信息,可以通过会话信息找到所属的客户终端。
[0041] 在本实施例中,配置聊天客户终端的方法还包括MINA存储设置步骤:设置所述聊天客户终端,使所述聊天客户终端的信息存储在所述信息存储单元中,从而所述MINA服务器通过所述信息存储单元获取其连接的聊天客户终端的信息,以将私聊信息发送至接收方。
[0042] 在另外的一些实施例中,MINA服务器还用于对聊天客户终端的请求进行鉴权(例如判断是否为黑名单用户,是否禁止其发言等),以决定是否对其进行后续处理;所述JMS服务器还用于将来自所述聊天室管理服务器的控制命令发送至所述MINA服务器,其中控制命令例如为踢人、禁言或关闭等。
[0043] 在一实施例中,该聊天服务器系统还包括:缓存服务器24,用于存储每个MINA服务器所连接的聊天客户终端信息,聊天客户终端信息例如为:客户终端IP、用户ID,用户所属聊天室ID等;MINA服务器可通过该缓存单元24判断上述私聊消息的接收方是否为自身连接的聊天客户终端,在本实施例中,将聊天客户终端信息保存在缓存服务器24中,则不需要使用数据库,因为用户通过聊天客户终端13登录了聊天室,就会有自已的信息,一旦退出,这个信息就不再需要,下次再登录,就是新的信息,这些信息是暂时的,所以,不需要数据库来保存,而使用缓存服务器24来保存。缓存服务器24还可保存MINA服务器集群的其他共享信息,例如,每个聊天室房间的用户基本信息(如用户ID、用户昵称、所属房间号等)。聊天室管理服务器12也可从该缓存服务器24中获取所需信息。
[0044] 在本实施例中,配置聊天客户终端的方法还包括缓存设置步骤:设置所述聊天客户终端,使所述聊天客户终端信息存储在所述缓存服务器中,从而使所述MINA服务器通过所述缓存服务器判断所述私聊消息的接收方是否为自身连接的聊天客户终端。
[0045] 优选地,缓存服务器24由高性能的分布式内存对象缓存系统Memcached来实现,本实施例中,将高性能系统Memcached用作内存服务,具有高效和运行稳定的优点。
[0046] 在图3所示的实施例中,通过交换机连接MINA服务器集群,能够根据聊天服务需要增加或减少MINA服务器的数量,这样,在无需重新设计该聊天服务器系统架构的情况下,便可根据实际情况对聊天服务器系统进行横向扩展,从而提高了结构的可扩展性。
[0047] 请参阅图4所示,其为本发时一实施例的连接于同一MINA服务器的两个聊天客户终端间私聊的流程图,在本实施例中,作为发送方的聊天客户终端A连接于MINA服务器A,作为接收方的聊天客户终端B也连接于MINA服务器A,聊天客户终端A欲发送私聊消息至聊天客户终端B,执行步骤如下:
[0048] S11:聊天客户终端A发送私聊消息至MINA服务器A,该私聊消息中包含接收方的ID;
[0049] S12:MINA服务器A根据接收方的ID从缓存服务器中获取接收方所属的MINA服务器;
[0050] S13:缓存服务器将接收方所属的MINA服务器返回给MINA服务器A(在本实施例中,接收方所属的MINA服务器也为MINA服务器A);
[0051] S14:MINA服务器A向聊天客户终端A返回发送结果(成功或失败);
[0052] S15:MINA服务器A根据接收方的ID从其内部的信息存储单元获取接收方信息,例如IP信息;
[0053] S16:信息存储单元将接收方信息返回给MINA服务器A,MINA服务器A由此获知接收方为聊天客户终端B;
[0054] S17:MINA服务器A将私聊信息发送给聊天客户终端B。
[0055] 请参阅图5所示,其为本发明一实施例的连接于不同MINA服务器的两个聊天客户终端间私聊的流程图,在本实施例中,作为发送方的聊天客户终端A连接于MINA服务器A,作为接收方的聊天客户终端B连接于MINA服务器B,聊天客户终端A欲发送私聊消息至聊天客户终端B,执行步骤如下:
[0056] S21:聊天客户终端A发送私聊消息至MINA服务器A,该私聊消息中包含接收方的ID;
[0057] S22:MINA服务器A根据接收方的ID从缓存服务器中获取接收方所属的MINA服务器;
[0058] S23:缓存服务器将接收方所属的MINA服务器返回给MINA服务器A(在本实施例中,接收方所属的MINA服务器为MINA服务器B);
[0059] S24:MINA服务器A发送私聊消息到JMS服务器;
[0060] 在本实施例中,每个MINA服务器在JMS服务器上分别对应一个JMS技术中的QUEUE(队列),以实现消息的顺序处理,例如,MINA服务器A发送私聊消息到接收方所属MINA服务器(即MINA服务器B)对应的QUEUE。
[0061] S25:MINA服务器A向聊天客户终端A返回发送结果(成功或失败);
[0062] S26:JMS服务器传递私聊消息到接收方所属MINA服务器(即MINA服务器B);
[0063] S27:MINA服务器B根据接收方的ID从其内部的信息存储单元获取接收方信息,例如IP信息;
[0064] S28:信息存储单元将接收方信息返回给MINA服务器B,MINA服务器B由此获知接收方为聊天客户终端B;
[0065] S29:MINA服务器B将私聊信息发送给聊天客户终端B。
[0066] 在本发明的再一实施例中,当所述MINA服务器从其连接的聊天客户终端接收的消息为广播消息时,所述MINA服务器将该广播消息发送至JMS服务器,并由JMS服务器将所述广播消息向MINA服务器广播,然后由MINA服务器向其所连接的聊天客户终端广播。
[0067] 其中,广播消息可为某一聊天客户终端向所有聊天客户终端发送的消息,也可为某一聊天客户终端向其所属的聊天室房间内的所有用户发送消息,即群聊。
[0068] 请参阅图6所示,其为本发明一实施例的聊天客户终端发布广播消息的流程图,在本实施例中执行步骤如下:
[0069] S31:聊天客户终端发送广播消息至MINA服务器;
[0070] S32:MINA服务器向聊天客户终端返回发送结果(成功或失败);
[0071] S33:MINA服务器A同步广播消息到JMS服务器;
[0072] 在本实施例中,通过JMS服务器发布广播消息由JMS技术中的TOPIC(题)对象实现。
[0073] S34:JMS服务器读取TOPIC,下发广播消息至所有MINA服务器;
[0074] S35:MINA服务器从其自身的信息存储单元获取各聊天客户终端信息,例如IP信息;
[0075] S36:各MINA服务器根据客户终端信息,将广播消息发布至客户终端,具体而言,如果该广播消息是发送到所有聊天客户终端的,则MINA服务器将该广播消息发布至所有客户终端;如果该广播消息是发送到某一聊天室房间的,则MINA服务器会将该广播消息发送给属于该聊天室房间的所有客户终端。
[0076] 本发明的实施例还提供了一种配置聊天客户终端的装置,包括:SOCKET连接设置单元,用于设置聊天客户终端,使其与聊天服务器系统之间建立SOCKET连接,并保持与所述聊天服务器系统的连接。
[0077] 本实施例的配置聊天客户终端的装置,能够使配置出的聊天客户终端在高并发、高访问的情况下,依然能获得聊天服务器系统实时响应。
[0078] 进一步地,本发明的实施例还提供了一种聊天客户终端,包括:SOCKET单元,用于与聊天服务器系统建立SOCKET连接,以实现在聊天客户端高并发的情况下,依然能获得聊天服务器系统的实时响应。
[0079] 在本发明的一实施例中,该聊天客户终端还包括:采用了FLASH技术的FLASH单元,用于向用户显示信息并接收用户输入,能够避免了由于不同的浏览器对xml解析方式的支持不一致所带来的兼容性问题,而且FLASH技术能使页面显示效果丰富多彩,特效效果明显,用户体验得以提高。
[0080] 具体地,SOCKET单元以及FLASH单元可为能够执行存储于一计算机可读取存储介质中的包含SOCKET程序或FLASH程序的CPU等硬件。所述的存储介质包括:ROM/RAM(Read Only Memory/Random-Access Memory,只读存储器/随机访问内存)、磁碟或者光盘等。
[0081] 虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本发明能够以多种形式具体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。