使用comet需要用到comet4j-tomcat7.jar(用于tomcat7)、comet4j.js。
注:spring及springMVC的相关配置略,只配置comet所需要的配置信息。
1.修改tomcat7的server.xml文件,nio
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="80" redirectPort="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"/>
2.新建服务端的类TestComet , 实现 ServletContextListener 接口
public class TestAction implements ServletContextListener {
public static final String CHANNEL = "test";
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent arg0) {
CometContext cc = CometContext.getInstance();
cc.registChannel(CHANNEL);
}
}
3.在web.xml添加下面代码
<servlet>
<servlet-name>CometServlet</servlet-name>
<servlet-class>org.comet4j.core.CometServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CometServlet</servlet-name>
<!-- 客户端的入口 -->
<url-pattern>/comet</url-pattern>
</servlet-mapping>
<listener>
<description>Comet4J容器侦听</description>
<listener-class>org.comet4j.core.CometAppListener</listener-class>
</listener>
<listener>
<description>TestAction类的路径</description>
<listener-class>com.mvc.action.TestAction</listener-class>
</listener>
4.客户端代码
<script type="text/javascript" src="<%=path%>/style/js/jquery-1.10.1.min.js"></script>
<script type="text/javascript" src="<%=path%>/style/js/comet4j.js"></script>
<div id="div"></div>
<script>
var o = $('#div');
JS.Engine.on({
test : function(data){//侦听一个channel,test就是TestAction.CHANNEL的值。
o.append('<p>'+data+'</p>');
}
});
JS.Engine.start('http://localhost/dtwb/comet'); //客户端访问的url就是web.xml配置的CometServlet的访问路径。
</script>
5.测试类
@RequestMapping(value="/chat")
@Controller
public class ChatAction {
@RequestMapping(value = "/test")
@ResponseBody
public Object test(String name) {
CometEngine engine = CometContext.getInstance().getEngine();
engine.sendToAll(TestAction.CHANNEL, name);
return "ok";
}
}
6.测试
首先打开test.jsp页面,然后运行测试接口:http://localhost/项目名/chat/test?name=测试数据
每执行一次测试接口,test.jsp页面就会自动多一条测试数据(实时无刷新)。