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>
相关推荐
服务器主动向客户端推送消息所需的comet4j-tomcat7.jar和comen4j.js,在此需注意:comet4j-tomcat7.jar目前仅支持tomcat6和tomcat7
comet4j消息推送所需的comet4j-tomcat7.jar包,comet4j-tomcat7.jar
comet4j-tomcat6、comet4j-tomcat7 的jar包和comet4j.js资源下载
Comet4J是一个微型的即时推送框架,它分为服务端与客户端两部分,你只要将服务器端(JAR文件,目前仅支持Tomcat6、7)放入WEB-INF\lib,客户端(JavaScript文件)引入到页面,那么你的应用就具备了向客户端推送信息的...
comet4j消息推送所需的comet4j.js文件、comet4j-tomcat6.jar、comet4j-tomcat7.jar包
comet4j完整包、comet4j.js、comet4j-tomcat6.jar、comet4j-tomcat7.jar
comet4j,comet4j实例,实例代码,可直接运行
Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作...文件包含comet4j-tomcat6.jar , comet4j-tomcat7.jar , comet4j.js。
comet4j-tomcat6,comet4j-tomcat7,comet4j.js,comet4j.js,以及一个样例
comet4j-tomcat7.jar comet4j.js Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架
comet4j 自己写的消息推送 觉得实用
压缩包中包含comet4j向客户端主动推送所需要的jar包和js(comet4j-tomcat6.jar、comet4j-tomcat7.jar、comet4j.js)
包含comet4j-tomcat6.jar,comet4j-tomcat7.jar,comet4j.js,以及官网demo:comet4j-tomcat6-demo.war
使用comet4j功能所必需的js文件以及jar包资源(comet4j-tomcat7)
Google上关于comet4j的所有文件,包括0.0.2版本的,Apache4~6以及4~7,和demo
comet4j使用方法,很详细,初学者必备。
comet技术所需要的jar包、js库,包含comet4j-tomcat6.jar、 comet4j-tomcat7.jar、comet4j.js、以及相关例子
comet4j,是服务端消息推送技术。直接可以运行
comet4j开发指南 Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架