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

未测试

未知

未知

?

0F5EA8402D3A6BE6.pngclass="Apple-converted-space">?

firefox.png?

450D335A5C006641.png?

E57D61FEE208A432.png?

6157E4D44A85631A.png?

95CF7B559E067585.gif

?

准备工作

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 World

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值