CN104348713A - B/S架构下网络平台基于comet的即时通讯方法 - Google Patents
B/S架构下网络平台基于comet的即时通讯方法 Download PDFInfo
- Publication number
- CN104348713A CN104348713A CN201410551472.6A CN201410551472A CN104348713A CN 104348713 A CN104348713 A CN 104348713A CN 201410551472 A CN201410551472 A CN 201410551472A CN 104348713 A CN104348713 A CN 104348713A
- Authority
- CN
- China
- Prior art keywords
- web server
- comet
- client
- server
- network platform
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
本发明公开了一种B/S架构下网络平台基于comet的即时通讯方法,其实现步骤如下:1、在Web服务器上设置缓存区,保存当前从服务器启动后一个时间段T内由客户端发来的聊天记录信息,多出所述缓存区的聊天记录信息保存至Web服务器的数据库中;2、在线的客户端的浏览器向Web服务器发请求;3、搭建即时通讯的基础连接;4、设置response的属性,使Web服务器可以多次响应,只要有某个客户端A给另外一个客户端B发消息,所述Web服务器首先把该消息存入到步骤1中所述缓存区中,并检测接收端是否在线,当其在线时,即从缓存区读取匹配的内容发送给客户端B,所述客户端B会实时收到所述消息。本发明的优点是稳定高效、反应迅速、操作流畅、通用性强、交流方式多样。
Description
技术领域
本发明涉及一种即时通讯方法,尤其涉及一种B/S架构下网络平台基于comet的即时通讯方法。
背景技术
现如今,在B/S架构下的网络平台应用广泛,其中,网络培训平台的在线交流功能在课堂应用中被越来越多的应用,目前,B/S架构下的即时通讯技术还不够成熟,通常多数采用定时器和Ajax 技术实现,Ajax隔一段时间(通常使用JavaScript的setTimeout函数)就去服务器查询是否有改变,从而进行增量式的更新。但是间多隔长时间去查询成了问题,因为性能和即时性造成了严重的反比关系。间隔太短,连续不断的请求会冲垮服务器,间隔太长,服务器上的新数据就需要越多的时间才能到达客户机。因为该技术需要不断的访问数据库信息,所以造成了带宽的极大浪费,会造成网络拥堵,使得系统运行效率低、运行不稳定,多用户访问时会有页面响应或刷新较慢的情况,用户体验很差。
发明内容
本发明提供了一种稳定高效、反应迅速、操作流畅、通用性强、交流方式多样的B/S架构下网络平台基于comet的即时通讯方法。
本发明所采用的技术方案如下:
一种B/S架构下网络平台基于comet的即时通讯方法,其采用comet技术开发的通讯模块,Comet 也称反向 Ajax 或服务器端推技术(server-side push);通过将数据直接从Web服务器推到浏览器,而不必等到浏览器请求数据,其具体方法步骤如下:
步骤1:在Web服务器中设置一个缓存区,保存当前从Web服务器启动后一个时间段T内由客户发来的聊天记录信息;
所述聊天记录信息包括发送时间、发送者、接收者、是否接收的参数,所述缓存区的大小可以设置,所以只保存一个时间段T的数据,多余的数据保存到数据库中。
步骤2:在线的客户端的浏览器向Web服务器发一个请求;
步骤3:建立即时通信的基础:
所述Web服务器接到请求后在servlet或struts的Action中用线程将所述请求休眠,使所述Web服务器不直接响应结束,这样客户端的浏览器与Web服务器就建立了一个长连接,这是即时通信的基础;
步骤4:设置response的属性readystate为 3 ,表示数据仍在传输中,使web服务器可以多次响应,这样只要有一个客户端给另外一个客户端发送消息,即发送端给接收端发送消息,所述web服务器就会将该消息存入步骤1中所述缓存区中,并从缓存区中读取匹配的内容发送给接收端,这样接收端浏览器就实时收到消息了,这样也就解决了多次主动找服务器要“数据”的问题,大大提高了执行效率。
进一步的,所述步骤2中还可以发送历史消息,即在线的客户端的浏览器单独发送一次历史记录查询的请求,由所述Web服务器一次性的从数据库中调取相应信息发送至客户端。
进一步的,所述Web服务器采用的是具有本地线程模型的Apache Tomcat开源服务器。
进一步的,所述Apache Tomcat开源服务器中设置有NIO java.nio开发包,NIO是JDK 1.4提出的java.nio开发包,该开发包能够以非阻塞的方式处理网络请求,使得java能在少量线程下就能够处理大量请求。
进一步的,所述聊天记录信息包括发送时间、发送者、接收者、是否接收的参数。
进一步的,所述时间段T的范围是可以设置的,默认时间为1小时,因为时间过长会导致缓存内容多,增大服务器压力。设置缓存时间段T的意义在于对于新上线的客户端,可以高效的接收到最近T时间内的未读消息。
为了有效地处理 Comet,需要非阻塞 IO,Java 通过它的 NIO 库提供非阻塞 IO。两种最流行的开源服务器 Apache Tomcat 和 Jetty 都利用 NIO 增加非阻塞 IO,从而支持 Comet,使本发明具有更广泛的通用性和移植性。
本发明的有益效果是:
(1)本发明采用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的Action中用线程将所述请求休眠,使所述Web服务器不直接响应结束,这样客户端的浏览器与Web服务器就建立了一个长连接,这是即时通信的基础;
步骤4:设置response的属性,使web服务器可以多次响应,这样只要有一个客户端给另外一个客户端发送消息,即发送端给接收端发送消息,web服务器就会将该消息存入步骤1中所述缓存区中,并从缓存区中读取匹配的内容发送给接收端,这样接收端浏览器就实时收到消息了,这样也就解决了多次主动找web服务器要“数据”的问题,大大提高了执行效率。
进一步的,所述步骤2中还可以发送历史消息,即在线的客户端的浏览器单独发送一次历史记录查询的请求,由所述Web服务器一次性的从数据库中调取相应信息发送至客户端。
进一步的,所述Web服务器采用的是具有本地线程模型的Apache Tomcat开源服务器。
进一步的,所述Apache Tomcat开源服务器中设置有NIO java.nio开发包,NIO是JDK 1.4提出的java.nio开发包,该开发包能够以非阻塞的方式处理网络请求,使得java能在少量线程下就能够处理大量请求。
进一步的,所述聊天记录信息包括发送时间、发送者、接收者、是否接收的参数。
进一步的,所述时间段T的范围是可以设置的,默认时间为1小时,因为时间过长会导致缓存内容多,增大Web服务器压力。设置缓存时间段T的意义在于对于新上线的客户端,可以高效的接收到最近T时间内的未读消息。
为了有效地处理 Comet,需要非阻塞 IO,Java 通过它的 NIO 库提供非阻塞 IO。两种最流行的开源服务器 Apache Tomcat 和 Jetty 都利用 NIO 增加非阻塞 IO,从而支持 Comet,使本发明具有更广泛的通用性和移植性。
以上所述实施方式仅为本发明的优选实施例,而并非本发明可行实施的穷举。对于本领域一般技术人员而言,在不背离本发明原理和精神的前提下对其所作出的任何显而易见的改动,都应当被认为包含在本发明的权利要求保护范围之内。
Claims (6)
1.一种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会实时收到所述消息。
2.根据权利要求1所述的B/S架构下网络平台基于comet的即时通讯方法,其特征在于:所述步骤2中还可以发送历史消息,即在线的客户端的浏览器单独发送一次历史记录查询的请求,由所述Web服务器一次性的从数据库中调取相应信息发送至客户端。
3.根据权利要求1或2所述的B/S架构下网络平台基于comet的即时通讯方法,其特征在于:所述Web服务器采用的是具有本地线程模型的Apache Tomcat开源服务器。
4.根据权利要求3所述的B/S架构下网络平台基于comet的即时通讯方法,其特征在于:所述Apache Tomcat开源服务器中设置有NIO java.nio开发包。
5.根据权利要求1所述的B/S架构下网络平台基于comet的即时通讯方法,其特征在于:所述聊天记录信息包括发送时间、发送者、接收者、是否接收的参数。
6.根据权利要求1所述的B/S架构下网络平台基于comet的即时通讯方法,其特征在于:所述时间段T可调。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410551472.6A CN104348713A (zh) | 2014-10-17 | 2014-10-17 | B/S架构下网络平台基于comet的即时通讯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410551472.6A CN104348713A (zh) | 2014-10-17 | 2014-10-17 | B/S架构下网络平台基于comet的即时通讯方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104348713A true CN104348713A (zh) | 2015-02-11 |
Family
ID=52503566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410551472.6A Pending CN104348713A (zh) | 2014-10-17 | 2014-10-17 | B/S架构下网络平台基于comet的即时通讯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104348713A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105634929A (zh) * | 2016-02-18 | 2016-06-01 | 浪潮软件集团有限公司 | 一种基于web网页的即时通信方法及装置 |
WO2018095223A1 (zh) * | 2016-11-22 | 2018-05-31 | 阿里巴巴集团控股有限公司 | 一种即时聊天工具的聊天记录处理方法及装置 |
CN108123868A (zh) * | 2017-12-20 | 2018-06-05 | 家园网络科技有限公司 | 通信系统、方法、装置及服务终端 |
CN109274585A (zh) * | 2018-10-12 | 2019-01-25 | 山东鲁能软件技术有限公司 | 基于ajax的b/s模式下的即时消息桌面系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101945055A (zh) * | 2009-07-09 | 2011-01-12 | 深圳市艾派应用系统有限公司 | 一种即时通信系统和即时通信方法 |
US20120096073A1 (en) * | 2010-10-18 | 2012-04-19 | Blabbelon, Inc. | Local polling method and system for real time updating of web-based services |
CN102571834A (zh) * | 2010-12-15 | 2012-07-11 | 金华六度信息科技有限公司 | 一种基于服务器推送技术的web即时通信系统及方法 |
CN103139051A (zh) * | 2013-03-22 | 2013-06-05 | 南京信通科技有限责任公司 | 一种基于Websocket协议的即时通讯方法 |
-
2014
- 2014-10-17 CN CN201410551472.6A patent/CN104348713A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101945055A (zh) * | 2009-07-09 | 2011-01-12 | 深圳市艾派应用系统有限公司 | 一种即时通信系统和即时通信方法 |
US20120096073A1 (en) * | 2010-10-18 | 2012-04-19 | Blabbelon, Inc. | Local polling method and system for real time updating of web-based services |
CN102571834A (zh) * | 2010-12-15 | 2012-07-11 | 金华六度信息科技有限公司 | 一种基于服务器推送技术的web即时通信系统及方法 |
CN103139051A (zh) * | 2013-03-22 | 2013-06-05 | 南京信通科技有限责任公司 | 一种基于Websocket协议的即时通讯方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105634929A (zh) * | 2016-02-18 | 2016-06-01 | 浪潮软件集团有限公司 | 一种基于web网页的即时通信方法及装置 |
WO2018095223A1 (zh) * | 2016-11-22 | 2018-05-31 | 阿里巴巴集团控股有限公司 | 一种即时聊天工具的聊天记录处理方法及装置 |
CN108123868A (zh) * | 2017-12-20 | 2018-06-05 | 家园网络科技有限公司 | 通信系统、方法、装置及服务终端 |
CN109274585A (zh) * | 2018-10-12 | 2019-01-25 | 山东鲁能软件技术有限公司 | 基于ajax的b/s模式下的即时消息桌面系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103780679B (zh) | 基于http协议的长延时远程调用方法 | |
CN103259683B (zh) | 基于HTML5的Web网管系统二级缓存推送方法 | |
CN102523177A (zh) | 一种消息推送服务的实现方法与系统 | |
CN103188574B (zh) | 传输网络视频的方法及系统 | |
CN104378399B (zh) | 一种数据推送方法、平台服务器、客户端以及系统 | |
CN105407180A (zh) | 服务器的消息推送方法和装置 | |
CN102932352A (zh) | 和客户端进行通信的方法以及服务器 | |
CN102708173A (zh) | 处理用户访问网页的请求的方法及系统 | |
CN103312751A (zh) | 一种基于浏览器的即时通信方法 | |
CN102255935A (zh) | 云服务消费方法、云服务消息包、云服务中介及云系统 | |
CN102045270A (zh) | 聊天服务器系统、构建聊天服务器系统的方法以及聊天系统 | |
CN109922138A (zh) | 消息推送方法、装置和系统 | |
CN104378436A (zh) | 一种基于服务器推送的信息推送系统及推送方法 | |
CN104348713A (zh) | B/S架构下网络平台基于comet的即时通讯方法 | |
CN103095684A (zh) | 获取关注用户聚合信息的方法、装置及系统 | |
CN103401946A (zh) | Http上传加速方法和系统 | |
CN102904903A (zh) | 通信系统和通信方法 | |
CN113132403A (zh) | 用于内容分发网络的回源方法和装置 | |
US20150006622A1 (en) | Web contents transmission method and apparatus | |
CN101321123A (zh) | 嵌入式传输动态数据的系统及其传输方法 | |
CN105100158A (zh) | 消息推送、获取方法及装置 | |
CN105208004A (zh) | 一种基于obd设备的数据入库方法 | |
CN105515936A (zh) | 消息通信的方法、服务器和系统 | |
CN105471953A (zh) | 客户端页面动态显示方法、装置和系统 | |
CN101895550B (zh) | 一种应用于互联网网站的兼容动静态内容的缓冲加速方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150211 |