`

Comet4j

 
阅读更多

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

下面网址可以下载:

http://code.google.com/p/comet4j/

 

 

准备工作
一.下载服务端jar文件
    Comet4J目前仅支持Tomcat6、7版本,根据您所使用的Tomcat版本下载 comet4j-tomcat6.jar 或 comet4j-tomcat7.jar 。
二.下载客户端js文件
下载 comet4j.js 到您的项目中。
三.修改服务器配置文件
    因为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"/>

 

*注意:NIO方式与BIO(Socket)的方式的最大区别就是NIO是一请求一线程,而BIO是一连接一线程,后者就导致如果服务器未来得及响应客户端就要一直等一直等,该连接就一直占用着这个线程。如果是NIO的话则可以复用连接,也就是无须等待服务器端的响应就可以继续给服务器端发送消息,发送和接收是异步响应的。

 

在web.xml中加载Comet4J框架

最后我们需要在web.xml配置侦听和comet连接地址,以使Comet4J生效:

<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>

 这里是最小化配置。

 

HelloWorld:

 

我们利用Comet4J开发一个每隔一秒向所有客户端推送服务器的剩余内存大小。 helloworld.html

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
<title>Comet4J Hello World</title>
<scripttype="text/javascript"src="js/comet4j-0.0.2.js"></script>
<scripttype="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 =newThread(newHelloAppModule(),"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>

 

 

 

 

 

 

分享到:
评论
4 楼 chisu4437 2016-06-12  
2525
3 楼 panxiaolan 2016-04-15  
2 楼 panxiaolan 2016-04-15  
[color=red][/艾丝凡的color]
1 楼 panxiaolan 2016-04-15  
[/size
[align=left]
[/align]]wn]
萨芬的方式的发生大幅

相关推荐

    comet4j 所需js以及comet4j-tomcat6.jar、comet4j-tomcat7.jar包

    综上所述,这个压缩包包含的`comet4j.js`、`comet4j-tomcat6.jar`和`comet4j-tomcat7.jar`是实现基于Java的Comet4j实时通信框架的关键组件。它们分别负责客户端的JavaScript交互、在Tomcat服务器上的集成和支持,为...

    comet4j 自己写的消息推送 觉得实用

    【标题】"comet4j 自己写的消息推送 觉得实用" 提示我们讨论的是一个自定义实现的基于 Comet4j 的消息推送系统。Comet4j 是一个开源的 Java 框架,用于实现实时的、双向的、基于 HTTP 长连接的消息推送服务,它解决...

    comet4j实例

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

    comet4j-tomcat6.jar和comet4j-tomcat7.jar和comet4j.js

    标题中的"comet4j-tomcat6.jar"和"comet4j-tomcat7.jar"是针对Tomcat 6和7版本的特定兼容库。这两个JAR文件包含了Comet4j的核心组件,使得开发者能够在这些版本的Tomcat上部署和运行支持Comet的Web应用程序。它们...

    comet4j-tomcat6.jar、comet4j-tomcat7.jar、comet4j.js

    在这个压缩包中,包含了针对Tomcat6和Tomcat7两个版本的Comet4J支持库以及对应的JavaScript库。 1. **Comet4J技术详解**: Comet技术是Web服务器与浏览器之间的一种持久连接方式,允许服务器在接收到新数据时主动...

    comet4j-tomcat6,comet4j-tomcat7,comet4j.js,以及一个样例

    首先,我们来了解`comet4j-tomcat6`和`comet4j-tomcat7`。这两个版本的库分别针对Tomcat 6和Tomcat 7进行优化,因为Comet4J的兼容性和性能可能会随着Tomcat版本的不同而变化。它们包含了必要的类和配置文件,使得在...

    comet4j-tomcat7.jar comet4j.js

    Comet4J是一个针对Java平台的服务器推送框架,它的核心理念是利用Ajax(XMLHttpRequest)技术来实现服务器向客户端的实时数据推送。在传统的HTTP协议中,服务器与客户端的通信通常依赖于客户端发起请求,而服务器...

    comet4j.js+comet4j-tomcat7jar包资源

    - 使用JavaScript调用Comet4J API,如`Comet4J.connect()`来建立连接,`Comet4J.send()`发送数据,以及注册事件监听器来处理服务器推送的消息。 4. 测试和调试: 启动Tomcat服务器,访问你的Web应用,确保客户端...

    comet4j完整包

    【标题】"comet4j完整包"是一个与Web服务端推送技术相关的软件包,它包含了一系列用于实现实时通信的组件和库。这个包旨在帮助开发者构建基于Comet技术的应用,以提供高效的、双向的服务器到客户端的数据传输。 ...

    comet4j完整资源

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

    comet4j 简单例子+文档

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

    comet4j使用方法

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

    comet4j需要的jar与js

    Comet4j是一个Java实现的长轮询技术框架,它主要用来解决Web应用中的实时通信问题。在传统的HTTP协议中,服务器向客户端推送数据时,需要客户端不断发起请求,服务器才能响应,这种方式效率低且浪费资源。而Comet4j...

    comet4j开发指南

    Comet4J开发指南 Comet4J是一个专为Java平台设计的服务器推送技术框架,它充分利用了AJAX(XMLHttpRequest)技术,实现了一种高效、实时的双向通信机制。在传统的HTTP协议中,服务器与客户端的交互是基于请求-响应...

    comet4j所有资源和示例代码

    1. `comet4j-tomcat6.jar` 和 `comet4j-tomcat7.jar`: 这两个JAR文件是Comet4J的Tomcat适配器,用于在Apache Tomcat 6和7版本上运行Comet4J应用。它们包含了与Tomcat容器交互所需的特定代码,以便Comet4J可以利用...

    comet4j+tomcat7 demo

    【comet4j+Tomcat7 Demo】是一个用于展示如何在Tomcat7服务器上整合并使用Comet4j技术的示例项目。Comet4j是一个开源的Java库,专门设计用于实现Comet技术,即长轮询(Long Polling)和HTTP流,以实现在Web应用中...

    Comet4j完整demo

    【Comet4j完整demo】是一个演示项目,它展示了如何使用Comet4j技术与Tomcat7集成,实现高效的服务器推送消息功能。Comet4j是一个开源的Java库,专门设计用于处理长连接(Long-Polling)通信,从而允许服务器主动向...

    基于comet4j的简易聊天

    Comet4j是一种Java库,专门用于实现 comet 技术,即服务器向客户端推送实时数据的一种方式。在Web开发中,Comet技术常用于构建实时交互的应用,如在线聊天、股票更新、即时通知等。本项目"基于Comet4j的简易聊天...

    comet4j的示范项目Demo

    【comet4j详解及其应用】 `comet4j`是一种基于Java的服务器端消息推送技术,它允许服务器主动向客户端发送数据,而无需客户端频繁发起请求,从而提高了Web应用程序的实时性。在传统的HTTP协议中,服务器通常只能在...

Global site tag (gtag.js) - Google Analytics