java comet demo,[转]comet4j的简单应用
Comet4J(Comet for Java)是一個純粹基于AJAX(XMLHTTPRequest)的服務器推送框架,消息以JSON方式傳遞,具備長輪詢、長連接、自動選擇三種工作模式。
在線Demo體驗
http://www.comet4j.org:8080/comet4j/
功能特性
推送消息廣播。
推送定向消息。
提供連接上線前、上線、下線前、下線、發送消息等多種可處理事件。
消息緩存機制,確保長輪詢工作模式下不丟失消息。
客戶端正常下線,服務端可立即感知。
客戶端異常停止工作,服務端可定時檢查并感知。
以注冊通道應用的方式,讓開發者對框架功能進行擴展,實現自己的應用。
框架特性
獨立小巧,不依賴于第三方包。
與應用緊密集成,無需獨立應用或服務器。
與Session無關的連接機制,為開發人員提供最大程度的功能可控性。
面向事件編程,客戶端與服務器端均為事件驅動開發模式,提供了良好的可擴展性機制。
各項性能參數均可配置。
支持多種主流瀏覽器,并支持Air應用環境。
服務器支持情況
Tomcat6、Tomcat7
瀏覽器支持情況
支持XMLHTTPRequest對象的瀏覽器均可支持長輪詢工作模式,但不一定能夠支持長連接。
瀏覽器/平臺
長輪詢
長連接
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
未測試
未知
未知
?
class="Apple-converted-space">?
?
?
?
?
?
準備工作
1.下載服務端jar文件
2.下載客戶端js文件
3.修改服務器配置文件
客戶端
服務端
配置
準備工作
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文件將找到原先的連接器配置:
?
替換為:
?
客戶端
我們利用Comet4J開發一個每隔一秒向所有客戶端推送服務器的剩余內存大小。 helloworld.html
Comet4J Hello Worldfunction init(){
??????? var kbDom = document.getElementById('kb');
??????? JS.Engine.on({
??????????????? hello : function(kb){//偵聽一個channel
??????????????????????? kbDom.innerHTML = kb;
??????????????? }
??????? });
??????? JS.Engine.start('conn');
}
??????? 剩余內存:...KB
服務端
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
??????????????? Comet4J容器偵聽
??????????????? org.comet4j.core.CometAppListener
???????
???????
??????????????? Comet連接[默認:org.comet4j.core.CometServlet]
??????????????? CometServlet
??????????????? CometServlet
??????????????? org.comet4j.core.CometServlet
???????
???????
??????????????? CometServlet
??????????????? /conn
???????
? HelloWorld
? org.comet4j.demo.helloworld.HelloWorld
轉載自:
http://code.google.com/p/comet4j/wiki/HelloWorld?
總結
以上是生活随笔為你收集整理的java comet demo,[转]comet4j的简单应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php有个qrcode类,一个PHP的Q
- 下一篇: 洗牙能把牙齿变白吗