对于页面一直监控,以前都是使用ajax请求即可,但是小并发这做法没多大问题,但是到了大并发就不太合适,如果不想自己写线程来操控就可以偷懒找一些插件,例如comet4j
下面我来演示下如何使用这个插件
先准备需要的工具:
comet4j-tomcat6.jar(tomcat6的就导入这个)
comet4j-tomcat7.jar(tomcat7的就导入这个)
comet4j.js(页面引入这个js)
具体操作看下面
然后就写个class
package com.shadow.extras.comet4j; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.comet4j.core.CometContext; import org.comet4j.core.CometEngine; public class TestComet implements ServletContextListener { private static final String CHANNEL = "test"; private static final String CHANNEL2 = "test2"; public void contextInitialized(ServletContextEvent arg0) { CometContext cc = CometContext.getInstance(); cc.registChannel(CHANNEL);// 注册应用的channel cc.registChannel(CHANNEL2); Thread helloAppModule = new Thread(new HelloAppModule(), "Sender App Module"); // 是否启动 helloAppModule.setDaemon(true); // 启动线程 helloAppModule.start(); Thread helloAppModule2 = new Thread(new HelloAppModule2(), "Sender App Module"); // 是否启动 helloAppModule2.setDaemon(true); // 启动线程 helloAppModule2.start(); } class HelloAppModule2 implements Runnable { public void run() { while (true) { try { // 睡眠时间 Thread.sleep(5000); } catch (Exception ex) { ex.printStackTrace(); } CometEngine engine = CometContext.getInstance().getEngine(); // 获取消息内容 long l = getFreeMemory(); // 开始发送 engine.sendToAll(CHANNEL2, l); } } } class HelloAppModule implements Runnable { public void run() { while (true) { try { // 睡眠时间 Thread.sleep(2000); } catch (Exception ex) { ex.printStackTrace(); } CometEngine engine = CometContext.getInstance().getEngine(); // 获取消息内容 long l = getFreeMemory(); // 开始发送 engine.sendToAll(CHANNEL, l); } } } public void contextDestroyed(ServletContextEvent arg0) { } public long getFreeMemory() { return Runtime.getRuntime().freeMemory() / 1024; } }
然后再写个页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Comet4J Hello World</title> <script type="text/javascript" src="plugin/comet4j/comet4j.js"></script> <script type="text/javascript"> function init(){ var kbDom = document.getElementById('kb'); var kbDom2 = document.getElementById('kb2'); JS.Engine.on({ test : function(aa){//侦听一个channel kbDom.innerHTML = aa; }, test2 : function(bb){ kbDom2.innerHTML = bb; } }); JS.Engine.start('comet'); } </script> </head> <body onload="init()"> 剩余内存:<span id="kb">...</span>KB <br/> 剩余内存:<span id="kb2">...</span>KB </body> </html>
接着配置下web.xml就ok了
<!-- 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>/comet</url-pattern> </servlet-mapping> <listener> <description>TestComet</description> <listener-class>com.shadow.extras.comet4j.TestComet</listener-class> </listener>
最后修改下tomcat的server.xml文件
把protocol参数值改成下面的,因为这是基于nio开发的插件
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>
测试,很简单就是访问我们刚刚创建的test.html,然后就可以看到内存数值一直自动刷新波动
相关推荐
这个项目是基于tomcat,comet4j的技术来实现推送消息到web页面,可以直接导入,直接运行的,里面包含了项目所需要的comet4j-tomcat7.jar(tomcat7的就导入这个),comet4j.js(页面引入这个js),等jar包,对于想要学习...
Comet4J是一个微型的即时推送框架,它分为服务端与客户端两部分,你只要将服务器端(JAR文件,目前仅支持Tomcat6、7)放入WEB-INF\lib,客户端(JavaScript文件)引入到页面,那么你的应用就具备了向客户端推送信息的...
comet4j 自己写的消息推送 觉得实用
服务端向浏览器实时推送消息,支持在线指定用户推送。内部带详细讲解,和举例,和代码嵌入步骤。
这是一个利用comet4j第三方插件,实现javaweb项目中后台消息向前台推送的一个功能,前台只要利用jquery,后台是用java实现,tomcat用7的版本
Servlet3.0 异步处理 页面推送 Comet 实例
comet4j,comet4j实例,实例代码,可直接运行
基于服务器推送框架 Comet4J ,后台模拟实时生成 gps 坐标信息然后再推送到前端页面显示。 如果按照以前的常见方式,我们很可能想到的实现是采用 ajax 前端页面,每隔多长时间向服务器发起一次请求。这是客户端主动...
DWR+JAVA进行web消息推送dwr-comet.zip
通过tomcat服务器,向网页发送即时消息。comet的小例子,可以直接运行,用tomcat6.0。
comet4j 发送消息实例代码 可以直接的运行代码 Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架
javaweb消息推送 基于comet实现局域网内部通讯(聊天室)demo 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。 消息缓存机制,确保长轮询工作模式下不丢失...
comet4j,是服务端消息推送技术。直接可以运行
comet4j实现服务器端主动向客户端推送消息。基于java实现,封装了注册、推送,只需关注业务的实现,导入eclipse直接运行。好资源,值得拥有
tomcat7后台服务器,java项目实现后台推送信息到客户端浏览器
NULL 博文链接:https://zzc1684.iteye.com/blog/2187874
Java comet服务器推送(聊天)实现代码。
Comet4J可运行样例,web页面刷新框架
先进入login.jsp通过名字登陆,然后可以发邮件一个框输内容一个框输想收件人id
comet4j消息推送所需的comet4j.js文件、comet4j-tomcat6.jar、comet4j-tomcat7.jar包