1导包 comet4j-tomcat7.jar ,我用apache-tomcat-8.0.32也能用
tomcat要修改的内容 server.xml,
如果要配置host, 配完要额外添加一个name="localhost" 的host标签,不然tomcat会报
<pre name="code" class="html"><pre name="code" class="html">2013-6-2 11:29:32 org.apache.coyote.http11.AbstractHttp11Processor process
严重: Error processing request
java.lang.NullPointerException
at org.apache.tomcat.util.buf.CharChunk.append(CharChunk.java:355)
at org.apache.tomcat.util.http.mapper.Mapper.map(Mapper.java:673)
at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAd
apter.java:646)
独立的host <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"></Host>
<Connector connectionTimeout="20000"
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="512"
minSpareThreads="16"
maxSpareThreads="32"
enableLookups="false"
acceptCount="512"
redirectPort="8443"
/>
2.web.xml 配置
<!-- comet4j服务器推送 不兼容 -->
<listener>
<listener-class>org.comet4j.core.CometAppListener</listener-class>
</listener>
<servlet>
<display-name>CometServlet</display-name>
<servlet-name>CometServlet</servlet-name>
<servlet-class>org.comet4j.core.CometServlet</servlet-class>
</servlet>
<!-- js与后台建立连接的servlet,路径要写对,相对页面注册配置的路径 这里使用根目录文件里配有的/conn -->
<servlet-mapping>
<servlet-name>CometServlet</servlet-name>
<url-pattern>/conn</url-pattern>
</servlet-mapping>
<!-- 初始化comet4j 自己写的实现类看下面 -->
<listener>
<listener-class>com.MyComet4jListener</listener-class>
</listener>
3.实现类
package com;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* 初始化comet
*/
public class MyComet4jListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
CometContext cc = CometContext.getInstance();
cc.registChannel("toUserWeb");//注册,js中的名字一致
}
}
4.导js comet4j.js
接着在页面注册 这里在根目录配置和上面的/conn的位置匹配
$(function(){
JS.Engine.start('conn');
JS.Engine.on({//后台推送频道
toUserWeb : function(data){
//js操作
}
});
}
5.类方法主动调用 toUserWeb
CometEngine engine = CometContext.getInstance().getEngine();
map=new HashMap();
engine.sendToAll("toUserWeb", map);//传送到网页,传参 页面会作响应