comet是服务器“推”技术的的一种实现,apache-tomcat提供了comet的支持。
下面来说说comet的工作原理:
Comet主要是利用客户端向服务器发出请求时,服务器发回响应内容,并利用javascript建立一个长时间链接的“长连接”,这个连接在没有接收到服务器或者没有到达连接时间限制时会一直等待服务器的消息,如果服务器有消息传来,立即显示最新信息。长连接每隔一段时间会重新向服务器发出连接请求。服务器在有新消息产生的时候立即检查消息的接收方是否存在长连接,如果存在马上发送,如果没有则不发送。
服务器的comet实现,需要继承HttpServlet类,实现org.apache.catalina.CometProcessor接口,服务器在收到客户端的请求时会调用CometProcessor接口的event方法,把一个org.apache.catalina.CometEvent对象传给event()。CometEvent有四个状态:CometEvent.EventType.BEGIN、CometEvent.EventType.ERROR、CometEvent.EventType.END、CometEvent.EventType.READ。服务器根据请求的状态来向客户端发送相应的数据。
原理大概就是这样,具体实现还需要一个MessageSender来不断的检查消息容器中是否存在数据,有则马上发送,没有就等待;一个connectorCleaner来不断的检查客户端的连接是否超时了,如果超时则断开,等客户端重新发来长连接。
客户端的comet实现,由于浏览器的类型和版本不一致,所以客户端需要实现两种不同的comet,一种是iframe长连接,一种是stream长连接。Iframe用于基于ie内核的浏览器,由于ie内核不支持stream长连接,所以用iframe长连接解决。客户端在向服务器请求数据时,服务器会返回一个带有隐藏iframe的页面,这个iframe每隔一段时间就向服务器发出数据请求以保持长连接,称为“心跳”。Stream是firefox的comet实现,stream支持连接状态的查询,即像CometEvent那样可以查询到连接的状态,并根据状态做不同的操作。Stream长连接将自动与服务器连接,不需像ie内核的浏览器那样需要通过iframe的刷新去重新建立连接。
Apache-tomcat对comet的支持,需要修改server.xml的配置,加入:
<Connector connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>
至此comet就能够实现了
分享到:
相关推荐
PHP防Sina微博无刷新服务器推送(Comet)原理是一种技术策略,用于实现在Web应用中实现长轮询或持久连接,使得服务器可以主动向客户端推送数据,而无需客户端频繁发送请求。这种技术在实时性要求较高的场景下,如...
服务器推技术,也称为Comet技术,是一种在Web应用程序中实现服务器向客户端实时推送数据的技术。传统的HTTP协议是基于请求-响应模型的,即客户端发起请求,服务器响应,然后连接关闭。这种机制不适合需要实时更新的...
- 客户端JavaScript代码:负责建立和维持Comet连接,并处理服务器推送过来的数据。 - 服务器端Java代码:创建Servlet或Filter来处理HTTP请求,当有新消息时,通过挂起的HTTP连接向客户端发送。 为了运行这个示例,...
5. **测试用例**:Test_comet可能是测试脚本或者一个简单的应用程序,用于验证Comet4j服务器推送功能是否正常工作。你可以通过运行这个测试用例,观察服务器和客户端之间的通信,以确保配置正确。 在学习和使用这个...
【标题】:“Tomcat comet 服务器推技术” Tomcat 的 Comet 技术是一种基于 HTTP 长连接的服务器推送技术,允许服务器在客户端保持一个开放的 HTTP 连接,从而能够在数据准备好时立即推送到客户端,而无需客户端...
Comet4J是一个实现了Comet技术的Java框架,它简化了在Java应用中实现服务器推送的复杂性。使用Comet4J,开发者可以创建服务端的推送通道,通过这些通道,服务器能够将数据高效地推送到多个客户端。Comet4J提供了多种...
其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。听起来简单,但是如果熟悉 Web 应用程序,尤其是 HTTP 协议,那么您就会知道,这绝不简单。实现 Comet 风格的 Web 应用程序,同时保证在...
在探讨Comet之前,我们先来了解一些常见的“服务器推”方案,并对它们进行简单的对比。 1. **基于插件的方法**: - **Flash XMLSocket**:利用Flash提供的XMLSocket类实现客户端与服务器之间的双向通信。优点是...
在压缩包文件`CometTest`中,可能包含了一个简单的Comet实现示例,你可以通过学习和运行这个例子来深入理解Servlet3.0异步处理和Comet页面推送的工作原理。通过实践,你可以更好地掌握如何在实际项目中利用这些技术...
综上所述,"comet4j.jar"压缩包提供了全面的Comet4j实现,包括核心库、服务器适配器、前端支持和示例应用,为开发者提供了一个完整的Comet解决方案,便于在实际项目中快速实现服务器推送功能。通过深入学习和实践,...
Java 实现 Comet 长连接,服务器主动发送消息给客户端是一项关键的技术,它在实时通信、推送服务等领域有着广泛的应用。Comet 是一种基于 HTTP 的持久化连接技术,允许服务器在客户端保持一个打开的 HTTP 连接,直到...
这个演示应用展示了如何使用Comet4J来实现服务器推送,对于初学者来说,它是理解Comet4J工作原理和使用方法的良好起点。 要使用这些文件,你需要首先在你的Tomcat服务器上部署`comet4j-tomcat6.jar`或`comet4j-...
Comet4j是一个Java库,专门用于实现Comet技术,这是一种服务器推送技术,允许服务器向客户端实时推送数据,而不仅仅是响应客户端的请求。在Web应用中,这种技术常用于实现聊天室、股票报价、在线游戏等实时交互功能...
通过这个Demo,你可以深入了解Comet4j的工作方式以及如何在实际项目中应用服务器推送技术。实践中,你还可以尝试优化连接管理,处理连接断开和重连的情况,以及测试不同浏览器和网络环境下的兼容性。服务器推送是一...
当服务器推送数据时,客户端的回调函数会被触发,接收并处理这些数据。 5. 测试与优化:运行服务器和客户端代码,测试推送功能是否正常工作。根据实际情况,可能需要调整连接超时时间、错误处理等细节,以保证系统...
- **服务器推**:与Comet密切相关,指的是服务器主动将数据推送到客户端,而不是被动等待客户端请求。 - **js**:JavaScript,客户端用于处理服务器推送数据的关键语言。 - **php**:PHP,本文提供的服务器端实现...
Comet4J是一个针对Java平台的服务器推送框架,它的核心理念是利用Ajax(XMLHttpRequest)技术来实现服务器向...通过深入理解Comet4J的工作原理和所提供的文件,我们可以充分利用其优势,构建出高性能的实时交互应用。
标题"comet4j推送Demo"表明这是一个使用Comet4j库创建的示例项目,目的是展示如何在Tomcat7环境下实现服务器推送功能。Tomcat7是一个广泛使用的开源Servlet容器,它支持Servlet 3.0规范,这为Comet4j提供了运行环境...
在这个"ssm.rar_comet_java"压缩包中,我们聚焦于Comet技术在Java环境下的应用,特别是用于实现服务器推送功能,如聊天应用。 Comet是一种Web实时通信技术,它通过持久化HTTP连接使得服务器可以主动向客户端推送...
Comet 是一种网络技术,它颠覆了传统的HTTP请求与响应模型,...通过深入研究和运行"Comet Demo",我们可以更好地理解Comet技术的工作原理,并学习如何将其应用于实际的在线交互应用中,提高用户体验和系统的实时性。