`
一缕疯狂0
  • 浏览: 5190 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

comet4j 一个简单的实例

 
阅读更多

一、comet4j 简介

Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。

 

二、功能简介

· 推送消息广播。

· 推送定向消息。

· 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。

· 消息缓存机制,确保长轮询工作模式下不丢失消息。

· 客户端正常下线,服务端可立即感知。

· 客户端异常停止工作,服务端可定时检查并感知。

· 以注册通道应用的方式,让开发者对框架功能进行扩展,实现自己的应用。

 

三、框架特性

· 独立小巧,不依赖于第三方包。

· 与应用紧密集成,无需独立应用或服务器。

· Session无关的连接机制,为开发人员提供最大程度的功能可控性。

· 面向事件编程,客户端与服务器端均为事件驱动开发模式,提供了良好的可扩展性机制。

· 各项性能参数均可配置。

· 支持多种主流浏览器,并支持Air应用环境。

 

 

四、服务器支持情况

Tomcat6Tomcat7

 

五、浏览器支持情况

浏览器/平台

版本

长轮询

长连接

Internet Explorer

6,7,8,9

X

FireFox

3.0+(更底版本未知)

Chrome

7.0+(更底版本未知)

Safari

5+(更底版本未知)

Opera

11.10+(更底版本未知)

X

Air

1.5+(更底版本未知)

IOS(Iphone/Ipad)

3.1+(更底版本未知)

Android

未测试

未知

未知

BlackBerry

未测试

未知

未知

 

 

六、简单的实例

 1.下载服务端jar文件

Comet4J目前仅支持Tomcat67版本,根据您所使用的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实例"中,我们将会探讨如何使用Comet4j来创建一个可运行的示例应用。这个压缩包`comet4jDemo`可能包含了以下组成部分: 1. **源代码**:通常包括Java类,这些类定义了服务器端的Comet处理逻辑以及...

    comet4j 简单例子+文档

    一个简单的Comet4j应用通常包含以下几个步骤: - 创建Comet服务:在服务器端,你需要创建一个Comet服务实例,设置监听端口和处理逻辑。 - 注册事件处理器:定义事件处理器类,处理来自服务器的数据推送事件。 - ...

    comet4j-tomcat7.jar和comen4j.js

    Comet4J是基于HTTP长连接的技术,通过在服务器端保持一个开放的HTTP连接,直到有新的数据可推送给客户端为止。这与传统的HTTP请求-响应模式不同,后者需要客户端发起请求才能获取数据。Comet4J通过延迟关闭HTTP连接...

    comet4j 发送消息实例代码 可以直接的运行代码

    下面是一个使用Comet4J发送消息的实例代码示例,这个例子展示了如何在Java应用中实现服务器推送: ```java import org.comet4j.client.CometClient; import org.comet4j.client.CometEvent; public class Comet4...

    comet4j的jar包、js、实例

    Comet4j是一个Java库,专门用于实现Comet技术,这是一种服务器推送技术,允许服务器向客户端实时推送数据,而不仅仅是响应客户端的请求。在Web应用中,这种技术常用于实现聊天室、股票更新、在线游戏等实时交互功能...

    基于comet4j的简易聊天

    在这个项目中,可能是一个简单的聊天室实例,展示如何使用Comet4j发送和接收第一条消息。 5. **开发环境与工具**:为了运行和调试这个项目,开发者可能需要Java开发环境(JDK)、IDE(如Eclipse或IntelliJ IDEA)、...

    comet4j完整资源

    Comet4j是一个Java库,专门用于实现Comet技术,这是一种服务器向客户端推送实时数据的Web应用程序设计模式。Comet技术通常用于构建实时交互的应用,如聊天应用、股票报价、在线游戏等,它克服了传统的HTTP请求-响应...

    comet4j使用方法

    Comet4J 是一个专为Java开发者设计的Comet技术框架,它允许服务器与客户端进行实时的双向通信,实现持久连接。Comet技术是解决Web应用程序实时性问题的一种方法,通过长时间保持HTTP连接来实现实时数据推送。下面将...

    comet4j的示范项目Demo

    总的来说,`comet4j`为开发实时Web应用提供了一个高效且易用的解决方案,通过掌握这一技术,你可以在构建高交互性的Web应用时更加游刃有余。在实际项目中,结合其他前端框架如Ajax、WebSocket等,可以构建出更加复杂...

    Comet4J可运行样例,web页面刷新框架

    3. **事件模型**:Comet4J使用事件驱动模型,当服务器端有新数据可用时,会触发一个事件,客户端通过监听这些事件来处理接收到的数据。 4. **线程管理**:由于长连接需要保持打开状态,Comet4J需要有效地管理这些...

    Comet4j demo

    Comet4j demo是展示如何使用Comet4j框架构建实时通信应用的一个实例,尤其是用于实现聊天功能。 在Web开发中,传统的Ajax技术存在效率问题,因为客户端需要不断地发送请求来检查服务器是否有新的数据。这不仅消耗了...

    Comet4j推送

    在"CometTest"这个文件中,我们可能看到一个简单的Comet4j应用示例。这个例子可能包含了服务器端和客户端的代码,用于演示如何使用Comet4j框架进行数据推送。服务器端的代码可能会创建一个Comet服务,监听特定的URL...

    comet4j 自己写的简单的叫号排队系统

    【comet4j 自己写的简单的叫号排队系统】是一个基于comet4j技术实现的简易排队管理系统。Comet4j是一种高效的、基于Java的 comet技术框架,它主要用于实现实时的服务器推送技术,能够在服务器端主动向客户端发送数据...

    comet4J文件集合需要集合

    Comet4J是一个基于Java的Web推送服务框架,它允许服务器主动向客户端推送数据,而无需客户端持续轮询。在Web应用中,这种技术能够显著提高实时性,尤其是在实时聊天、股票更新、在线游戏等场景中。下面我们将深入...

    SSH整合comet即时通信

    4. **客户端接口**:在前端,使用JavaScript或其他客户端技术(如Ajax)创建一个长轮询或流式请求,连接到服务器的Comet处理器。当服务器有新消息时,客户端可以通过这个连接接收到消息。 5. **消息处理**:在SSH...

    消息推送实例commet4j

    总结来说,Comet4j是一个强大的消息推送框架,它利用HTTP长连接技术实现服务器到客户端的实时数据推送。在实际开发中,掌握Comet4j的使用不仅能提升应用的性能,还能为用户提供更加流畅的交互体验。通过学习和实践这...

    comet聊天室,Dojo使用,学习的好例子

    一个comet的实例,使用了dojoJavaScript等

    DWR推送技术大全 dwr推送聊天实例

    3. **Batching**:DWR允许你将多个请求合并成一个批次,这样可以减少网络传输的次数,提高效率。 4. **Caching**:DWR还提供了缓存机制,可以缓存服务器响应,避免不必要的重复请求。 5. **Push Mechanism**:DWR...

    webchat_test

    这个项目的名称暗示着它可能是一个用于测试Web聊天功能的实例,可能是为了演示、学习或验证特定的技术解决方案。 【描述】"webchat_test" 的描述简单明了,但我们可以从中推测出该项目的核心内容。它很可能是基于...

Global site tag (gtag.js) - Google Analytics