一、comet4j 简介
Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。 |
二、功能简介
· 推送消息广播。 · 推送定向消息。 · 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。 · 消息缓存机制,确保长轮询工作模式下不丢失消息。 · 客户端正常下线,服务端可立即感知。 · 客户端异常停止工作,服务端可定时检查并感知。 · 以注册通道应用的方式,让开发者对框架功能进行扩展,实现自己的应用。 |
三、框架特性
· 独立小巧,不依赖于第三方包。 · 与应用紧密集成,无需独立应用或服务器。 · 与Session无关的连接机制,为开发人员提供最大程度的功能可控性。 · 面向事件编程,客户端与服务器端均为事件驱动开发模式,提供了良好的可扩展性机制。 · 各项性能参数均可配置。 · 支持多种主流浏览器,并支持Air应用环境。
|
四、服务器支持情况
Tomcat6、Tomcat7 |
五、浏览器支持情况
|
六、简单的实例
1.下载服务端jar文件
Comet4J目前仅支持Tomcat6、7版本,根据您所使用的Tomcat版本下载【comet4j-tomcat6.jar】或【comet4j-tomcat7.jar】文件放置到WEB项目的WEB-INF\lib目录下。 |
2.下载客户端js文件
下载【comet4j.js】到您的项目中,比如:WebContent\js目录下。 |
3.修改服务器配置文件
因为Comet4J工作在NIO方式下,所以我们需要调整服务器连接器配置,更换为NOI连接器。 打开server.xml文件将找到原先的连接器配置:
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
替换为:
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>
客户端
我们利用Comet4J开发一个每隔一秒向所有客户端推送服务器的剩余内存大小。 helloworld.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Comet4J Hello World</title><script type="text/javascript" src="js/comet4j-0.0.2.js"></script><script type="text/javascript">function init(){ var kbDom = document.getElementById('kb');
JS.Engine.on({
hello : function(kb){//侦听一个channel
kbDom.innerHTML = kb; } });
JS.Engine.start('conn');}</script></head><body onload="init()">
剩余内存:<span id="kb">...</span>KB</body></html>
服务端
helloworld.java
package org.comet4j.demo.helloworld;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.comet4j.core.CometContext;import org.comet4j.core.CometEngine;public class HelloWorld implements ServletContextListener { private static final String CHANNEL = "hello"; public void contextInitialized(ServletContextEvent arg0) { CometContext cc = CometContext.getInstance();
cc.registChannel(CHANNEL);//注册应用的channel Thread helloAppModule = new Thread(new HelloAppModule(), "Sender App Module");
helloAppModule.setDaemon(true);
helloAppModule.start(); } class HelloAppModule implements Runnable { public void run() { while (true) { try { Thread.sleep(1000); } catch (Exception ex) {
ex.printStackTrace(); } CometEngine engine = CometContext.getInstance().getEngine();
engine.sendToAll(CHANNEL, Runtime.getRuntime().freeMemory()/1024); } } } public void contextDestroyed(ServletContextEvent arg0) { }}
配置
web.xml
<listener> <description>Comet4J容器侦听</description> <listener-class>org.comet4j.core.CometAppListener</listener-class> </listener> <servlet> <description>Comet连接[默认:org.comet4j.core.CometServlet]</description> <display-name>CometServlet</display-name> <servlet-name>CometServlet</servlet-name> <servlet-class>org.comet4j.core.CometServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CometServlet</servlet-name> <url-pattern>/conn</url-pattern> </servlet-mapping><listener> <description>HelloWorld</description> <listener-class>org.comet4j.demo.helloworld.HelloWorld</listener-class></listener>
<!--EndFragment-->
相关推荐
在这个"comet4j实例"中,我们将会探讨如何使用Comet4j来创建一个可运行的示例应用。这个压缩包`comet4jDemo`可能包含了以下组成部分: 1. **源代码**:通常包括Java类,这些类定义了服务器端的Comet处理逻辑以及...
一个简单的Comet4j应用通常包含以下几个步骤: - 创建Comet服务:在服务器端,你需要创建一个Comet服务实例,设置监听端口和处理逻辑。 - 注册事件处理器:定义事件处理器类,处理来自服务器的数据推送事件。 - ...
下面是一个使用Comet4J发送消息的实例代码示例,这个例子展示了如何在Java应用中实现服务器推送: ```java import org.comet4j.client.CometClient; import org.comet4j.client.CometEvent; public class Comet4...
Comet4j是一个Java库,专门用于实现Comet技术,这是一种服务器推送技术,允许服务器向客户端实时推送数据,而不仅仅是响应客户端的请求。在Web应用中,这种技术常用于实现聊天室、股票更新、在线游戏等实时交互功能...
在这个项目中,可能是一个简单的聊天室实例,展示如何使用Comet4j发送和接收第一条消息。 5. **开发环境与工具**:为了运行和调试这个项目,开发者可能需要Java开发环境(JDK)、IDE(如Eclipse或IntelliJ IDEA)、...
Comet4j是一个Java库,专门用于实现Comet技术,这是一种服务器向客户端推送实时数据的Web应用程序设计模式。Comet技术通常用于构建实时交互的应用,如聊天应用、股票报价、在线游戏等,它克服了传统的HTTP请求-响应...
Comet4J 是一个专为Java开发者设计的Comet技术框架,它允许服务器与客户端进行实时的双向通信,实现持久连接。Comet技术是解决Web应用程序实时性问题的一种方法,通过长时间保持HTTP连接来实现实时数据推送。下面将...
总的来说,`comet4j`为开发实时Web应用提供了一个高效且易用的解决方案,通过掌握这一技术,你可以在构建高交互性的Web应用时更加游刃有余。在实际项目中,结合其他前端框架如Ajax、WebSocket等,可以构建出更加复杂...
Comet4J是基于HTTP长连接的技术,通过在服务器端保持一个开放的HTTP连接,直到有新的数据可推送给客户端为止。这与传统的HTTP请求-响应模式不同,后者需要客户端发起请求才能获取数据。Comet4J通过延迟关闭HTTP连接...
3. **事件模型**:Comet4J使用事件驱动模型,当服务器端有新数据可用时,会触发一个事件,客户端通过监听这些事件来处理接收到的数据。 4. **线程管理**:由于长连接需要保持打开状态,Comet4J需要有效地管理这些...
Comet4j demo是展示如何使用Comet4j框架构建实时通信应用的一个实例,尤其是用于实现聊天功能。 在Web开发中,传统的Ajax技术存在效率问题,因为客户端需要不断地发送请求来检查服务器是否有新的数据。这不仅消耗了...
在"CometTest"这个文件中,我们可能看到一个简单的Comet4j应用示例。这个例子可能包含了服务器端和客户端的代码,用于演示如何使用Comet4j框架进行数据推送。服务器端的代码可能会创建一个Comet服务,监听特定的URL...
【comet4j 自己写的简单的叫号排队系统】是一个基于comet4j技术实现的简易排队管理系统。Comet4j是一种高效的、基于Java的 comet技术框架,它主要用于实现实时的服务器推送技术,能够在服务器端主动向客户端发送数据...
Comet4J是一个基于Java的Web推送服务框架,它允许服务器主动向客户端推送数据,而无需客户端持续轮询。在Web应用中,这种技术能够显著提高实时性,尤其是在实时聊天、股票更新、在线游戏等场景中。下面我们将深入...
4. **客户端接口**:在前端,使用JavaScript或其他客户端技术(如Ajax)创建一个长轮询或流式请求,连接到服务器的Comet处理器。当服务器有新消息时,客户端可以通过这个连接接收到消息。 5. **消息处理**:在SSH...
总结来说,Comet4j是一个强大的消息推送框架,它利用HTTP长连接技术实现服务器到客户端的实时数据推送。在实际开发中,掌握Comet4j的使用不仅能提升应用的性能,还能为用户提供更加流畅的交互体验。通过学习和实践这...
一个comet的实例,使用了dojoJavaScript等
3. **Batching**:DWR允许你将多个请求合并成一个批次,这样可以减少网络传输的次数,提高效率。 4. **Caching**:DWR还提供了缓存机制,可以缓存服务器响应,避免不必要的重复请求。 5. **Push Mechanism**:DWR...
这个项目的名称暗示着它可能是一个用于测试Web聊天功能的实例,可能是为了演示、学习或验证特定的技术解决方案。 【描述】"webchat_test" 的描述简单明了,但我们可以从中推测出该项目的核心内容。它很可能是基于...