整个例子的源码下载:http://pan.baidu.com/s/1gfFYSbp

下载服务端jar文件

Comet4J目前仅支持Tomcat6、7版本,根据您所使用的Tomcat版本下载【comet4jtomcat6.jar】或【comet4j-tomcat7.jar】文件放置到WEB项目的WEB-INF\lib目录下。

本文下载comet4j-tomcat7.jar, 下载地址:http://pan.baidu.com/s/1eSBXmfS

下载客户端js文件

下载【comet4j.js】到您的项目中,比如:WebContent\JS\cometd目录下。
下载地址:http://pan.baidu.com/s/1qXYxkYg

修改服务器配置文件

因为Comet4J工作在NIO方式下,所以我们需要调整服务器连接器配置,更换为NOI连接器。 打开server.xml文件将找到原先的连接器配置:
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />  

替换为

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>  

客户端

我们利用Comet4J开发一个每隔一秒向所有客户端推送一个定时增长的数字。
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cometd首页</title>
<script type="text/javascript" src="./JS/cometd/comet4j.js"></script>
<script type="text/javascript">var projectPath = '<%= request.getContextPath()%>';function cometdCallback(text){var kbDom = document.getElementById('num1');kbDom.innerHTML = text;}function init() {JS.Engine.on({number : cometdCallback});JS.Engine.start(projectPath+'/conn');}
</script>
</head>
<body onload="init()">数字3:<span id="num1">...</span>
</body>
</html>

其中,<%=request.getContextPath()%>是为了解决相对路径的问题,可返回站点的根路径。

服务端

package com.cvicse.ump.cometd;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;import org.comet4j.core.CometContext;public class CometdTestClass implements ServletContextListener {private static final String CHANNEL_NUM = "number";private static int number = 0;@Overridepublic void contextDestroyed(ServletContextEvent arg0) {}@Overridepublic void contextInitialized(ServletContextEvent arg0) {CometContext.getInstance().registChannel(CHANNEL_NUM);Thread timeThread = new Thread(new TimeThread(),"numTimeThread");timeThread.setDaemon(true);//设置为守护线程
        timeThread.start();}class TimeThread implements Runnable{@Overridepublic void run() {while(true){CometContext.getInstance().getEngine().sendToAll(CHANNEL_NUM, number++);System.out.println(CHANNEL_NUM+": "+number);try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}}}}}

配置

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>cometd</display-name><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list><listener><description>Comet4J容器侦听</description><listener-class>org.comet4j.core.CometAppListener</listener-class></listener><listener><listener-class>com.cvicse.ump.cometd.CometdTestClass</listener-class></listener><servlet><description>Comet连接[默认:org.comet4j.core.CometServlet]</description>  <servlet-name>CometServlet</servlet-name><servlet-class>org.comet4j.core.CometServlet</servlet-class></servlet><servlet-mapping><servlet-name>CometServlet</servlet-name><url-pattern>/conn</url-pattern></servlet-mapping></web-app>

java即时消息推送相关推荐

  1. Netty-SocketIO:最好用的Java版即时消息推送

    Netty-SocketIO是一个开源的.基于Netty的.Java版的即时消息推送项目.通过Netty-SocketIO,我们可以轻松的实现服务端主动向客户端推送消息的场景,比如说股票价格变化.K线 ...

  2. 环境监控告警系统之TIM即时消息推送部署

    TIM是由腾讯发布的多平台客户端应用.TIM是轻聊的QQ,更方便办公.TIM用在QQ轻聊版的基础上加入了协同办公服务的支持,消息完全同步,支持多人在线编辑Word.Excel文档等,更加适合办公使用. ...

  3. java后台 flex前台例子_flex+blazeds+java后台消息推送(简单示例)

    现在有个问题需要大家思考一下,有个已经上线了的项目,有好好几千甚至上万的客户在使用了.现在项目开发商想发布一个通知.在今天下午6点需要重新启动服务器,想让在线的人在在预定的时间内都收到消息,让大家做好 ...

  4. java xmpp消息推送_基于XMPP协议(openfire服务器)的消息推送实现

    最近好像有不少朋友关注Android客户端消息推送的实现,我在之前的项目中用到过Java PC客户端消息推送,从原理讲上应该是一致的,在这里分享一下个人的心得. 消息推送实现原理 这里的消息推送,通常 ...

  5. java整合消息推送_SpringMVC整合websocket实现消息推送及触发功能

    本文为大家分享了SpringMVC整合websocket实现消息推送,供大家参考,具体内容如下 1.创建websocket握手协议的后台 (1)HandShake的实现类 /** *Project N ...

  6. 个推+mui+html5 +java完成消息推送

    几个月前写的,个推官方的例子真是难,找了好久才拼出来这几个方法,本文包含java调用个推SDK的消息推送和app方向的接收消息. package geti; import java.io.IOExce ...

  7. java android消息推送_Android中使用socket通信实现消息推送的方法详解

    原理最近用socket写了一个消息推送的demo,在这里和大家分享一下. 主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ. 效果图: 原理: ...

  8. Java之消息推送浅入浅出

    在日常开发中,消息推送是非常典型的业务需求,下面对消息推送简单的分析一下. 消息推送通常指网站的运营人员通过某种工具对用户当前网页或移动设备APP进行的主动消息推送.主要分为web端消息推送和移动端消 ...

  9. Java xinge 消息推送Android和IOs

    xinge消息推送: 比如就像淘宝一样,用户下完订单,就会给用户提示一条信息:订单核对等等.如果我们也想实现类似的功能呢? 一.往pom.xml文件中引入包 <dependency>< ...

最新文章

  1. 使用 expect 命令执行自动分发系统
  2. 小学五年级计算机进度安排,五年级下册信息技术年度教学计划
  3. 微软发布Azure Service Fabric Mesh公开预览版
  4. linux下的汇编,linux下的汇编分析
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的实验室设备管理系统
  6. C++中实例化一个类的方式
  7. python wordcloud 对电影《我不是潘金莲》制作词云
  8. 最热BMS可直接下载!!
  9. node在Fedora 22系统下开发环境搭建
  10. 英雄联盟英雄中英文名
  11. Regression 中的 R方
  12. 怎么识别手写的文字?办公常备软件说明
  13. androbench跑分性能排查
  14. Centos7之pacemaker高可用安装配置
  15. css鼠标拖拉卡顿_浅谈CSS3 动画卡顿解决方案
  16. Phoenix创建盐表
  17. java自动化测试语言高级之Java 9 新特性
  18. 20121025 The django book 笔记 站点管理
  19. HT合泰单片机入门教程(第二章 点亮第一个LED灯)
  20. 《Web安全之机器学习入门》笔记第一章

热门文章

  1. 网络空间拟态防御发展综述:从拟态概念到“拟态+”生态
  2. 直播源码开发视频直播平台,不得不了解的流程...
  3. 香港银行开户有哪些坑?
  4. 地表最强:iOS安全黑宝书中文版来袭(赠书)
  5. 8.26新股票池操作建议(ZZ)
  6. 图解 CMMI 2.0之(五)模型结构
  7. 请别把加班说的那么“高大上”
  8. EXCEL中把两列表格里的数字合成一列并且中间用逗号隔开
  9. 怎样查看已分好区的硬盘的分配单元大小
  10. CSS——水平(横向滚动条)