[发明专利]B/S架构下网络平台基于comet的即时通讯方法在审
申请号: | 201410551472.6 | 申请日: | 2014-10-17 |
公开(公告)号: | CN104348713A | 公开(公告)日: | 2015-02-11 |
发明(设计)人: | 朱卫民;王勋;梁昭;杨秀娥 | 申请(专利权)人: | 国家电网公司;国网河北省电力公司培训中心 |
主分类号: | H04L12/58 | 分类号: | H04L12/58;H04L29/08 |
代理公司: | 石家庄新世纪专利商标事务所有限公司 13100 | 代理人: | 徐瑞丰;董金国 |
地址: | 100031 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 架构 网络 平台 基于 comet 即时通讯 方法 | ||
技术领域
本发明涉及一种即时通讯方法,尤其涉及一种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服务器负载,同时提高系统效率,更好的实现消息实时到达效果;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国家电网公司;国网河北省电力公司培训中心,未经国家电网公司;国网河北省电力公司培训中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410551472.6/2.html,转载请声明来源钻瓜专利网。