一种在网页上实现实时交互的系统及方法

文档序号:7777234阅读:4343来源:国知局
一种在网页上实现实时交互的系统及方法
【专利摘要】本发明涉及一种在网页上实现实时交互的系统及方法,属于通信及计算机领域的即时通讯技术,包括:客户端检测与适配模块、负载均衡模块、服务状况监控模块、socket注册与定位模块、消息处理服务模块和业务逻辑服务模块.。利用本发明,可以让用户在网页上实现实时互动,譬如:实时聊天、评论、通知等等,较好地增强了用户间的实时互动,极大提升用户体验。
【专利说明】—种在网页上实现实时交互的系统及方法
【技术领域】
[0001]本发明涉及一种在网页上实现实时交互的系统及方法,属于通信及计算机领域的即时通讯技术。
【背景技术】
[0002]计算机网络通信作为一种先进的通信方式,一直在改变着人们的生活。而建立在计算机网络通信基础上的互联网网站服务,凭借其建设成本低、用户访问方便等特点,现已成为提供信息、交流信息、使用信息的平台。
[0003]社会性网络服务,即SNS网站,作为一种互联网网站服务形式,旨在帮助人们建立社会性互联网应用服务,已成为日常生活中不可或缺的一部分。SNS以人为本,注重的是人与人之间的关系,它正在为几十亿互联网用户构建一个真实的网上社会。
[0004]互联网短短几十年的发展几乎彻底改变了人类的生活方式。而今,传统互联网正从“人与机器”的交互时代迈向以SNS为代表的“人与人”的交互时代。SNS应用的爆发代表着互联网的未来,像Facebook、Twitter,开心网、腾讯、新浪、搜狐、阿里巴巴等各大电信运营商们,都深刻地意识到这场新的互联网革命的重要性。
[0005]作为SNS应用的开发者,每时每刻都在思考:如何才能开发出一个像Facebook那样成功的SNS网站,究竟应该如何开发这些应用才能吸引用户?才能让用户留下来?分析SNS网站的特点,不难发现让用户之间实时互动起来能够极大地吸引用户进来且使得用户活跃起来。利用本发明,可以让用户在网页上实现实时互动,譬如:实时聊天、评论、通知等等,较好地增强了互动,极大提升地用户体验。
[0006]基于常规Web2.0技术,使用短连接的ajax请求/响应模式,可以采用两种方式来准实时地获取相关的信息:(I)用户主动发起操作请求,服务器返回数据后,采用异步加载的方式在网页上显示出来;(2)采用浏览器间隔时间来发起个轮询请求,服务器返回数据后,采用异步加载的方式在网页上显示出来;上述两种实现方式分别采用户1、用户2来说明,如I图所示。
[0007]从I图中,可以看到,基于常规Web2.0技术,无论是现有方案一还是方案二,不难发现,都有两个明显的缺点:一是实时性不高,二是只能实现“用户”与“服务器”之间的数据传输和反馈,无法让不同的用户之间在线实时交换数据、进行互动,制约了产品形态的进一步升级,也影响了用户体验。

【发明内容】

[0008]本发明技术解决问题:克服现有技术的不足,提供一种在网页上实现实时交互的系统及方法,利用本发明,可以让用户在网页上实现实时互动,譬如:实时聊天、评论、通知等等,较好地增强了用户间的实时互动,极大提升地用户体验。
[0009]本发明技术解决方案:一种在网页上实现实时交互的系统,其特征在于包括:客户端检测与适配模块、负载均衡模块、服务状况监控模块、socket注册与定位模块、消息处理服务模块和业务逻辑服务模块;其中:
[0010]客户端检测与适配模块:非常重要的模块,负责进行用户浏览器版本、特性、ip地址、对脚本支持程度等检测、获取用户输入、与消息处理服务模块建立websocket连接,以及接收服务端推送数据等功能。该模块的输入为用户的键盘、鼠标操作结果,并将输入数据进行JSON格式编码,输出到消息处理服务模块;该模块在与消息处理服务模块建立websocket连接之前,会与负载均衡模块进行一次远程调用,来获取较为空闲的消息处理模块服务器地址。
[0011]负载均衡模块:实现各种客户端消息的接收,根据后端各个消息服务器的繁忙程度,将消息转发给相对空闲的某台消息服务器;该模块的输入来自客户端检测与适配模块,收到请求后查询服务状况监控模块的数据,将查询结果返回给客户端检测与适配模块。确保用户连接均衡分布在各消息处理服务模块上。
[0012]服务状况监控模块:实现对后台消息处理服务模块的运行情况的监控,存储负载数据。该模块的数据输入来自消息处理服务模块,后者将自身的负载情况数据发送到服务状况监控模块保存。
[0013]消息处理服务模块:实现与客户端检测与适配模块的websocket连接服务,并且实现消息的分组,然后送至相应的分组逻辑服务器;该模块的输入来自客户端检测与适配模块,收到发来的编码后的用户数据后,将数据转发给逻辑服务模块去处理。同时,在与客户端检测与适配模块建立websocket连接后,会将用户ip等信息注册到socket注册与定位模块。
[0014]逻辑服务模块:实现相应的业务功能,譬如:进行关键字的过滤、业务数据的计算、存储等,并将处理后的结果回传给消息服务器,并通过负载均衡的接口返回到客户端上。该模块的输入为消息处理服务模块,收到输入数据后,进行业务逻辑处理,并且生成要返回给用户的推送数据,查询socket注册与定位模块上的用户地址信息,把返回数据发送给消息处理服务模块。
[0015]所述客户端检测与适配模块的实现过程:
[0016](I)检测浏览器是否支持javascript,提示用户允许使用javascript ;
[0017](2)检测浏览器是否支持HTML5,如果不支持,选用连接方案为XHR-long poll,否则方案为websocket协议;
[0018](3)访问负载均衡模块,获取当前空闲的消息处理服务模块的地址;
[0019](4)选用当前浏览器支持的协议(XHR-long poll或websocket),连接空闲的消息处理服务模块,并且将用户的id,ip地址信息等发送过去;
[0020](5 )获取用户输入数据,进行JSON编码;
[0021](6)将用户输入数据发出到消息处理服务模块。
[0022]所述负载均衡模块的实现过程:
[0023](I)后台首先会为不同的房间开启不同的消息服务处理模块;
[0024](2)当客户端检测与适配模块与消息处理模块连接之前,先发送http请求到负载均衡模块,查询目标房间的一个可用的消息处理模块服务地址;
[0025](3)负载均衡模块根据传入的房间号,发送查询请求到服务状况监控模块,获取负责该房间的消息处理模块的实际地址;[0026](4)负载均衡模块将查询到的地址信息返回给客户端检测与适配模块。
[0027]所述服务状况监控模块的实现过程:
[0028](I)服务状况监控模块在所有消息处理服务模块启动前就会开启;
[0029](2)所有的消息处理服务模块,都在配置文件中配置了服务状况监控模块的地址;
[0030](3)消息处理服务模块,每隔I分钟,会将连接到自己的客户端数量,上报给服务状况监控模块。
[0031]所述消息处理服务模块的实现过程:
[0032](I)消息处理服务模块启动后,首先监听配置文件中指定的端口信息,准备接受来自客户端检测与适配模块的连接请求;
[0033](2)接着,消息处理服务模块将自己所在的服务器地址、端口号注册到服务状况监控模块,方便负载均衡模块去读取;
[0034](3 )每隔I分钟,消息处理服务模块还将把自身连接的客户端数量,打包成j son格式的数据,发送到服务状况监控模块,由后者保存;
[0035](4)当收到一个客户端检测与适配模块的连接请求后(该请求带有用户id,ip地址信息等),把连接建立后产生的socket对象保存到本地内存中,方便后续对其进行反向消息推送使用;
[0036](5) socket信息保存到本地内存后,消息处理服务模块还将socket信息、以及用户id信息发送到socket注册和定位模块,由后者进行保存。
[0037]所述socket注册与定位模块的实现过程:
[0038](I)启动后在内存中建立Iv子典;
[0039](2)字典的key为用户id ;
[0040](3)字典的value为用户浏览器中的客户端检测与适配模块所连接到的消息处理模块的地址;
[0041](4)接收消息处理服务模块的注册请求,将用户id、对应的消息处理模块地址写入到字典;
[0042](5)接收业务逻辑服务模块的查询请求,查询条件为用户id,根据id查询到字典对应项目的值返回。
[0043]所述业务逻辑服务模块的实现过程:
[0044](I)对转发过来的消息解析成字符串;
[0045](2)针对字符串里的内容进行对应的逻辑处理,如:存储到数据库中;
[0046](3)对处理后的内容做一些关键字过滤,打包成消息,返回给消息服务处理模块,通过负载均衡接口回送到对应的客户端上。
[0047]本发明的方法具体实现步骤为:
[0048]1、客户端检测与适配模块,在用户浏览器中检测用户设置、浏览器版本,完成连接方案的选取;
[0049]2、客户端检测与适配模块调用负载均衡模块,获取到空闲的消息处理服务模块的地址;
[0050]3、客户端检测与适配模块使用步骤I中决定的连接方案,连接步骤2中获取到的消息处理服务模块;
[0051]4、客户端检测与适配模块接收用户键盘输入,把数据转化为JSON格式,发送给消息处理服务模块;
[0052]5、消息处理服务模块将客户端检测与适配模块的连接产生的socket信息、连同发送过来的用户id信息注册到socket注册与定位模块;
[0053]6、消息处理服务模块将发送来的用户输入数据转发给业务逻辑服务模块去处理;
[0054]7、业务逻辑服务模块接收到请求数据后,根据当前用户的消息类型、进行逻辑处理(具体处理逻辑根据不同的业务场景而不同);
[0055]8、如果该业务处理需要向指定的用户、或多个用户推送消息(这些用户称为推送目标用户),则业务逻辑服务模块向socket注册与定位模块发送查询请求,查询推送目标用户所连接到的消息处理服务模块的地址;
[0056]9、业务逻辑服务模块向消息处理服务模块发送推送数据请求;
[0057]10.消息处理服务模块在本地内存中找到用户id对应的socket,把推送数据发送出去;
[0058]11.客户端检测与适配模块收到推送数据后,展现给用户,完成整个实时消息的处理。
[0059]本发明与现有技术的优点在于:
[0060](I)由于传统的实时交互都需要在浏览器内安装相应的插件才能完成,比如flashplayer、ActiveX控件等,本发明采用的是浏览器内部的组件来实现的,故减轻了用户的安装负担,打开网页就可以使用。
[0061](2)现有的web技术,只能够实现针对用户请求,发送响应的功能。而无法实现由服务端主动向用户浏览器推送数据的功能。具体原因是因为http请求是短连接,当一次请求、响应动作完成后,该链接会自动断开,所以服务端就无法再给用户推送数据了。
[0062](3)本发明为了解决这个问题,使用了 2个重要的技术方案,下面分别阐述如下:
[0063]a) XHR-long poll:当客户端检测与适配组件发现用户浏览器版本较老,不支持HTML5技术时,会选用此方案。该方案中,客户端检测与适配组件会先发送一个握手http请求到消息处理服务模块,产生一个sessionID,并约定一个轮询过去时间T。接着,客户端检测与适配组件会向消息处理服务模块发送I个普通的http请求,等待其响应。而消息处理服务模块收到这个http请求后,不会立刻返回,而是将sessionID、发起时间记录下来,并且设定一个计时器,其触发时间为T:在计时器到期之前,如果有数据需要推送给该用户,则取出之前存下来的请求对象,给其发送响应信息,此时这个http链接断开。而浏览器收到该响应后,立刻重复上述动作,再次发送一个http请求到消息处理服务模块,等待下一次的推送。
[0064]b)websocket:当客户端检测与适配组件发现用户浏览器版本支持HTML5技术时,会选用此方案。此方案是各大浏览器厂商在最新版的浏览器支持的一种在浏览器后台运行socket的技术。本发明对不同的浏览器提供的接口进行了封装,提供一种统一的数据格式,实现了不同浏览器下都可以成功的建立websocket连接。
[0065](4 )由于http是无状态、短连接的,所以采用a j ax等方式必须由客户端来发起,一般使用客户端的轮询查询的方式来完成数据的读取,本发明采用的是页面内的长连接的方式,服务器与客户端保持长连接,服务器可以主动推送数据给用户,提交了交互的实时性。
【专利附图】

【附图说明】
[0066]图1为现有技术示意图;
[0067]图2为本发明的系统整体架构流程图;
[0068]图3为图2中消息处理服务模块的实现流程图;
[0069]图4为图2中负载均衡模块的实现流程图。
【具体实施方式】
[0070]如图2所示,本发明的方法具体实现步骤为:
[0071]1、客户端检测与适配模块,在用户浏览器中检测用户设置、浏览器版本,完成连接方案的选取;
[0072]2、客户端检测与适配模块通过http请求调用负载均衡模块,尝试获取空闲的消息处理服务模块的地址:
[0073]a)请求格式为:http://domainName/getFreeHostAddress ;
[0074]b)负载均衡模块收到请求后,查询服务状况监控模块里存储的数据,字段包括:月艮务器地址、当前在线连接数;
[0075]c)负载均衡模块在内存中对查询到的记录按照“当前在线连接数”从小到大排列,取出人数最少的服务器地址;
[0076]d)返回该地址;
[0077]3、客户端检测与适配模块使用步骤I中决定的连接方案,连接步骤2中获取到的消息处理服务模块;
[0078]4、客户端检测与适配模块接收用户键盘输入,把数据转化为JSON格式,发送给消息处理服务模块;
[0079]5、消息处理服务模块将客户端检测与适配模块的连接产生的socket信息、连同发送过来的用户id信息注册到socket注册与定位模块;
[0080]a)消息处理服务模块发送注册请求给socket注册与定位模块,数据格式:{userID:〈长整型 >,socketid:< 字符 >};
[0081]b)socket注册与定位模块以userID为key, socketid为value,写入到本地内存的字典中;
[0082]c)注册成功,返回。
[0083]6、消息处理服务模块将发送来的用户输入数据转发给业务逻辑服务模块去处理;
[0084]7、业务逻辑服务模块接收到请求数据后,根据当前用户的消息类型、进行逻辑处理(具体处理逻辑根据不同的业务场景而不同);
[0085]8、如果该业务处理需要向指定的用户、或多个用户推送消息(这些用户称为推送目标用户),则业务逻辑服务模块向socket注册与定位模块发送查询请求,查询推送目标用户所连接到的消息处理服务模块的地址;[0086]9、业务逻辑服务模块向消息处理服务模块发送推送数据请求;
[0087]10、消息处理服务模块在本地内存中找到用户id对应的socket,把推送数据发送出去;
[0088]11、客户端检测与适配模块收到推送数据后,展现给用户,完成整个实时消息的处理。
[0089]如图3所示,负载均衡模块具体实现如下:
[0090]负载均衡模块的主要解决:
[0091]a)在用户量比较大的时候,一台服务器已经不能满足需求,需要支持多服务器分布式部署;
[0092]b)由于webSocket连接属于长连接,一个链接的不同请求具有上下文关系,所以不能简单的使用现有的http反向代理模式来进行负载均衡,需要自主研发负载均衡模块。
[0093]主要实现负载的策略是:
[0094]1、为不同的房间开启不同的消息服务组件;
[0095]2、当客户端请求连接的时候,先调用负载均衡接口,查询目标房间的一个可用服务地址;
[0096]3、负载均衡组件内部维护了不同服务器的负载信息,当收到调度请求的时候,查询最空闲的服务器地址返回。
[0097]如图4所示,消息处理服务模块具体实现如下:
[0098]消息处理服务模块主要采用webSocket服务,主要解决:
[0099]1、用于实现基于浏览器的长连接消息通信,以使得服务端与客户端能实时通信;
[0100]2、能够让用户在不安装任何插件的情况下,实现与服务器端的实时消息收发、提高消息的及时性。
[0101]消息处理服务模块的实现过程:
[0102]1、在客户建立连接的消息里获取浏览器的版本信息及支持的连接特性;
[0103]2、根据浏览器的特性加载XHR-Polling组件或websocket-client组件;
[0104]3、采用步骤2中的一种方式连接到websocket服务器,并设置对应的消息订阅处理函数;
[0105]4、接收到消息,循环进行处理。
【权利要求】
1.一种在网页上实现实时交互的系统,其特征在于包括:客户端检测与适配模块、负载均衡模块、服务状况监控模块、socket注册与定位模块、消息处理服务模块和业务逻辑服务模块;其中: 客户端检测与适配模块,负责进行用户浏览器版本、特性、ip地址、对脚本支持程度检测、获取用户输入、与消息处理服务模块建立websocket连接,以及接收服务端推送数据功能;该模块的输入为用户的键盘、鼠标操作结果,并将输入数据进行JSON格式编码,输出到消息处理服务模块;该模块在与消息处理服务模块建立websocket连接之前,会与负载均衡模块进行一次远程调用,来获取较为空闲的消息处理模块服务器地址; 负载均衡模块:实现各种客户端消息的接收,根据后端各个消息服务器的繁忙程度,将消息转发给相对空闲的某台消息服务器;该模块的输入来自客户端检测与适配模块,收到请求后查询服务状况监控模块的数据,将查询结果返回给客户端检测与适配模块,确保用户连接均衡分布在各消息处理服务模块上; 服务状况监控模块:实现对后台消息处理服务模块的运行情况的监控,存储负载数据该模块的数据输入来自消息处理服务模块,后者将自身的负载情况数据发送到服务状况监控模块保存; 消息处理服务模块:实现与客户端检测与适配模块的websocket连接服务,并且实现消息的分组,然后送至相应的分组逻辑服务器;该模块的输入来自客户端检测与适配模块,收到发来的编码后的用户数据后,将数据转发给逻辑服务模块去处理;同时,在与客户端检测与适配模块建立websocket连接后,会将用户ip信息注册到socket注册与定位模块; 逻辑服务模块:实现相应的业务功能,包括进行关键字的过滤、业务数据的计算、存储,并将处理后的结果回传给消息服务器,并通过负载均衡的接口返回到客户端上;该模块的输入为消息处理服务模块,收到输入数据后,进行业务逻辑处理,并且生成要返回给用户的推送数据,查询socket注册与`定位模块上的用户地址信息,把返回数据发送给消息处理服务模块。
2.根据权利要求1所述的在网页上实现实时交互的系统,其特征在于:所述客户端检测与适配模块的实现过程: Cl)检测浏览器是否支持javascript,提示用户允许使用javascript ; (2)检测浏览器是否支持HTML5,如果不支持,选用连接方案为XHR-longpoll,否则方案为websocket协议; (3)访问负载均衡模块,获取当前空闲的消息处理服务模块的地址; (4)选用当前浏览器支持的协议包括XHR-longpoll或websocket,连接空闲的消息处理服务模块,并且将用户的id,ip地址信息等发送过去; (5 )获取用户输入数据,进行JSON编码; (6)将用户输入数据发出到消息处理服务模块。
3.根据权利要求1所述的在网页上实现实时交互的系统,其特征在于:所述负载均衡模块的实现过程: (1)后台首先会为不同的房间开启不同的消息服务处理模块; (2)当客户端检测与适配模块与消息处理模块连接之前,先发送http请求到负载均衡模块,查询目标房间的一个可用的消息处理模块服务地址;(3)负载均衡模块根据传入的房间号,发送查询请求到服务状况监控模块,获取负责该房间的消息处理模块的实际地址; (4)负载均衡模块将查询到的地址信息返回给客户端检测与适配模块。
4.根据权利要求1所述的在网页上实现实时交互的系统,其特征在于:所述服务状况监控模块的实现过程: (1)服务状况监控模块在所有消息处理服务模块启动前就会开启; (2)所有的消息处理服务模块,都在配置文件中配置了服务状况监控模块的地址; (3)消息处理服务模块,每隔I分钟,会将连接到自己的客户端数量,上报给服务状况监控模块。
5.根据权利要求1所述的在网页上实现实时交互的系统,其特征在于:所述消息处理服务模块的实现过程: (1)消息处理服务模块启动后,首先监听配置文件中指定的端口信息,准备接受来自客户端检测与适配模块的连接请求; (2)接着,消息处理服务模块将自己所在的服务器地址、端口号注册到服务状况监控模块,方便负载均衡模块去读取。 (3 )每隔I分钟,消息处理服务模块还将把自身连接的客户端数量,打包成j son格式的数据,发送到服务状况监控模块,由后者保存。 (4)当收到一个客户端检测与适配模块的带有用户id,ip地址信息连接请求后,该请求,把连接建立后产生的socket对象保存到本地内存中,方便后续对其进行反向消息推送使用; (5)socket信息保存到本地内存后,消息处理服务模块还将socket信息、以及用户id信息发送到socket注册和定位模块,由后者进行保存。
6.根据权利要求1所述的在网页上实现实时交互的系统,其特征在于:所述socket注册与定位模块的实现过程: (1)启动后在内存中建立一个字典; (2)字典的key为用户id; (3)字典的value为用户浏览器中的客户端检测与适配模块所连接到的消息处理模块的地址; (4)接收消息处理服务模块的注册请求,将用户id、对应的消息处理模块地址写入到字血.ZN ? (5)接收业务逻辑服务模块的查询请求,查询条件为用户id,根据id查询到字典对应项目的值返回。
7.根据权利要求1所述的在网页上实现实时交互的系统,其特征在于:所述业务逻辑服务模块的实现过程 (1)对转发过来的消息解析成字符串; (2)针对字符串里的内容进行对应的逻辑处理,包括存储到数据库中; (3)对处理后的内容做一些关键字过滤,打包成消息,返回给消息服务处理模块,通过负载均衡接口回送到对应的客户端上。
8.—种在网页上实现实时交互的方法,其特征在于实现步骤为:(1)客户端检测与适配模块,在用户浏览器中检测用户设置、浏览器版本,完成连接方案的选取; (2)客户端检测与适配模块调用负载均衡模块,获取到空闲的消息处理服务模块的地址; (3)客户端检测与适配模块使用步骤I中决定的连接方案,连接步骤2中获取到的消息处理服务模块; (4)客户端检测与适配模块接收用户键盘输入,把数据转化为JSON格式,发送给消息处理服务模块; (5)消息处理服务模块将客户端检测与适配模块的连接产生的socket信息、连同发送过来的用户id信息注册到socket注册与定位模块; (6)消息处理服务模块将发送来的用户输入数据转发给业务逻辑服务模块去处理; (7)业务逻辑服务模块接收到请求数据后,根据当前用户的消息类型、进行逻辑处理; (8)如果该业务处理需要向指定的用户、或多个用户推送消息,则业务逻辑服务模块向socket注册与定位模块发 送查询请求,查询推送目标用户所连接到的消息处理服务模块的地址; (9)业务逻辑服务模块向消息处理服务模块发送推送数据请求; (10)消息处理服务模块在本地内存中找到用户id对应的socket,把推送数据发送出去; (11)客户端检测与适配模块收到推送数据后,展现给用户,完成整个实时消息的处理。
【文档编号】H04L12/58GK103634382SQ201310590327
【公开日】2014年3月12日 申请日期:2013年11月20日 优先权日:2013年11月20日
【发明者】崔凯, 操灿 申请人:安徽科大讯飞信息科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1