B/S架构下网络平台基于comet的即时通讯方法技术

技术编号:11042197 阅读:135 留言:0更新日期:2015-02-12 10:27
本发明专利技术公开了一种B/S架构下网络平台基于comet的即时通讯方法,其实现步骤如下:1、在Web服务器上设置缓存区,保存当前从服务器启动后一个时间段T内由客户端发来的聊天记录信息,多出所述缓存区的聊天记录信息保存至Web服务器的数据库中;2、在线的客户端的浏览器向Web服务器发请求;3、搭建即时通讯的基础连接;4、设置response的属性,使Web服务器可以多次响应,只要有某个客户端A给另外一个客户端B发消息,所述Web服务器首先把该消息存入到步骤1中所述缓存区中,并检测接收端是否在线,当其在线时,即从缓存区读取匹配的内容发送给客户端B,所述客户端B会实时收到所述消息。本发明专利技术的优点是稳定高效、反应迅速、操作流畅、通用性强、交流方式多样。

【技术实现步骤摘要】

本专利技术涉及一种即时通讯方法,尤其涉及一种。
技术介绍
现如今,在B/S架构下的网络平台应用广泛,其中,网络培训平台的在线交流功能在课堂应用中被越来越多的应用,目前,B/S架构下的即时通讯技术还不够成熟,通常多数采用定时器和Ajax技术实现,Ajax隔一段时间(通常使用JavaScript的setTimeout函数)就去服务器查询是否有改变,从而进行增量式的更新。但是间多隔长时间去查询成了问题,因为性能和即时性造成了严重的反比关系。间隔太短,连续不断的请求会冲垮服务器,间隔太长,服务器上的新数据就需要越多的时间才能到达客户机。因为该技术需要不断的访问数据库信息,所以造成了带宽的极大浪费,会造成网络拥堵,使得系统运行效率低、运行不稳定,多用户访问时会有页面响应或刷新较慢的情况,用户体验很差。
技术实现思路
本专利技术提供了一种稳定高效、反应迅速、操作流畅、通用性强、交流方式多样的。 本专利技术所采用的技术方案如下:一种,其采用comet技术开发的通讯模块,Comet也称反向Ajax或服务器端推技术(server-side push);通过将数据直接从Web服务器推到浏览器,而不必等到浏览器请求数据,其具体方法步骤如下:步骤1:在Web服务器中设置一个缓存区,保存当前从Web服务器启动后一个时间段T内由客户发来的聊天记录信息;所述聊天记录信息包括发送时间、发送者、接收者、是否接收的参数,所述缓存区的大小可以设置,所以只保存一个时间段T的数据,多余的数据保存到数据库中。 步骤2:在线的客户端的浏览器向Web服务器发一个请求;步骤3:建立即时通信的基础:所述Web服务器接到请求后在servlet或struts的Act1n中用线程将所述请求休眠,使所述Web服务器不直接响应结束,这样客户端的浏览器与Web服务器就建立了一个长连接,这是即时通信的基础;步骤4:设置response的属性readystate为3 ,表示数据仍在传输中,使web服务器可以多次响应,这样只要有一个客户端给另外一个客户端发送消息,即发送端给接收端发送消息,所述web服务器就会将该消息存入步骤I中所述缓存区中,并从缓存区中读取匹配的内容发送给接收端,这样接收端浏览器就实时收到消息了,这样也就解决了多次主动找服务器要“数据”的问题,大大提高了执行效率。 进一步的,所述步骤2中还可以发送历史消息,即在线的客户端的浏览器单独发送一次历史记录查询的请求,由所述Web服务器一次性的从数据库中调取相应信息发送至客户端。 进一步的,所述Web服务器采用的是具有本地线程模型的Apache Tomcat开源服务器。 进一步的,所述Apache Tomcat开源服务器中设置有N1 java.n1开发包,N1是JDK 1.4提出的java.n1开发包,该开发包能够以非阻塞的方式处理网络请求,使得java能在少量线程下就能够处理大量请求。 进一步的,所述聊天记录信息包括发送时间、发送者、接收者、是否接收的参数。 进一步的,所述时间段T的范围是可以设置的,默认时间为I小时,因为时间过长会导致缓存内容多,增大服务器压力。设置缓存时间段T的意义在于对于新上线的客户端,可以高效的接收到最近T时间内的未读消息。 为了有效地处理Comet,需要非阻塞10,Java通过它的N1库提供非阻塞10。两种最流行的开源服务器Apache Tomcat和Jetty都利用N1增加非阻塞10,从而支持Comet,使本专利技术具有更广泛的通用性和移植性。 本专利技术的有益效果是:(I)本专利技术采用comet技术开发的通讯模块,大大降低Web服务器的负载,可以实现单发和群发多种交流方式,且反应迅速,操作流畅。 (2)本专利技术采用将数据直接从Web服务器推到浏览器,不必等到浏览器请求数据,通过设置缓存区,加快存取速度,缓存区大小可以设置,根据使用场合灵活调整缓存区大小,能够减少访问数据库的次数,降低web服务器负载,同时提高系统效率,更好的实现消息实时到达效果;(3)本专利技术通过将请求休眠,能够在浏览器和Web服务器之间建立长连接,克服传统方式中必须不断轮询web服务器,造成网络和web服务器资源严重浪费的情况,实现消息收发的高效率机制;(4)本专利技术设置response的属性,使web服务器可以多次响应,当发送端发送消息后,web服务器将消息存放到缓存区,然后检索接收端在线状态,如在线则主动从缓存区中读取匹配的未读消息发送给接收端,解决了客户端多次主动找web服务器要“数据”的问题,大大提闻了执行效率。 【具体实施方式】 为使本专利技术要解决的技术问题、技术方案和有益效果更加清楚,下面将结合具体实施例进行详细描述。 本实施例中采用comet技术开发的通讯模块,Comet也称反向Ajax或服务器端推技术(server-side push);通过将数据直接从Web服务器推到浏览器,而不必等到浏览器请求数据,其具体方法步骤如下:步骤1:在Web服务器中设置一个缓存区,保存当前从Web服务器启动后一个时间段T内由客户发来的聊天记录信息;所述聊天记录信息包括发送时间、发送者、接收者、是否接收的参数,所述缓存区的大小可以设置,所以只保存一个时间段T的数据,多余的数据保存到数据库中。 步骤2:在线的客户端的浏览器向Web服务器发一个请求;步骤3:建立即时通信的基础:所述Web服务器接到请求后在servlet或struts的Act1n中用线程将所述请求休眠,使所述Web服务器不直接响应结束,这样客户端的浏览器与Web服务器就建立了一个长连接,这是即时通信的基础;步骤4:设置response的属性,使web服务器可以多次响应,这样只要有一个客户端给另外一个客户端发送消息,即发送端给接收端发送消息,web服务器就会将该消息存入步骤I中所述缓存区中,并从缓存区中读取匹配的内容发送给接收端,这样接收端浏览器就实时收到消息了,这样也就解决了多次主动找web服务器要“数据”的问题,大大提高了执行效率。 进一步的,所述步骤2中还可以发送历史消息,即在线的客户端的浏览器单独发送一次历史记录查询的请求,由所述Web服务器一次性的从数据库中调取相应信息发送至客户端。 进一步的,所述Web服务器采用的是具有本地线程模型的Apache Tomcat开源服务器。 进一步的,所述Apache Tomcat开源服务器中设置有N1 java.n1开发包,N1是JDK 1.4提出的java.n1开发包,该开发包能够以非阻塞的方式处理网络请求,使得java能在少量线程下就能够处理大量请求。 进一步的,所述聊天记录信息包括发送时间、发送者、接收者、是否接收的参数。 进一步的,所述时间段T的范围是可以设置的,默认时间为I小时,因为时间过长会导致缓存内容多,增大Web服务器压力。设置缓存时间段T的意义在于对于新上线的客户端,可以高效的接收到最近T时间内的未读消息。 为了有效地处理Comet,需要非阻塞10,Java通过它的N1库提供非阻塞10。两种最流行的开源服务器Apache Tomcat和Jetty都利用N1增加非阻塞10,从而支持Comet,使本专利技术具有更广泛的通用性和移植性。 以上所述本文档来自技高网...

【技术保护点】
一种B/S架构下网络平台基于comet的即时通讯方法,其特征在于:步骤如下:步骤1:在Web服务器上设置一个空间大小可设定的缓存区,保存当前从服务器启动后一个时间段T内由客户端发来的聊天记录信息,多出所述缓存区的聊天记录信息保存至Web服务器的数据库中;步骤2:在线的客户端的浏览器向Web服务器发一个请求;步骤3:搭建即时通讯的基础连接:所述Web服务器接到所述请求后在servlet或struts的Action中用线程将所述请求休眠,使Web服务器不直接响应结束,在客户端的浏览器与Web服务器之间建立一个长连接,搭建完成即时通讯的基础;步骤4:设置response的属性,使Web服务器可以多次响应,只要有某个客户端A给另外一个客户端B发消息,即发送端给接收端发送消息,所述Web服务器首先把该消息存入到步骤1中所述缓存区中,并检测接收端是否在线,当其在线时,即从缓存区读取匹配的内容发送给客户端B,所述客户端B会实时收到所述消息。

【技术特征摘要】
1.一种B/S架构下网络平台基于comet的即时通讯方法,其特征在于:步骤如下: 步骤1:在Web服务器上设置一个空间大小可设定的缓存区,保存当前从服务器启动后一个时间段T内由客户端发来的聊天记录信息,多出所述缓存区的聊天记录信息保存至Web服务器的数据库中; 步骤2:在线的客户端的浏览器向Web服务器发一个请求; 步骤3:搭建即时通讯的基础连接: 所述Web服务器接到所述请求后在servlet或struts的Act1n中用线程将所述请求休眠,使Web服务器不直接响应结束,在客户端的浏览器与Web服务器之间建立一个长连接,搭建完成即时通讯的基础; 步骤4:设置response的属性,使Web服务器可以多次响应,只要有某个客户端A给另外一个客户端B发消息,即发送端给接收端发送消息,所述Web服务器首先把该消息存入到步骤I中所述缓存区中,并检测接收端是否在线,当其在线时,即从缓存区读取匹配的内容发送给客户端B,所述客户端...

【专利技术属性】
技术研发人员:朱卫民王勋梁昭杨秀娥
申请(专利权)人:国家电网公司国网河北省电力公司培训中心
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1