Comet是一种用于web的推送技术,能使服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,长轮询和iframe流
一:所需资源
1.comet4j-tomcat7-v0.0.2.jar
2.servlet-api.jar 3.0
二:tomcat 配置(server.xml中启动nio)
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" port="80" redirectPort="8443"/>
三:监听器配置(web.xml)
<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>
<servlet-mapping>
<servlet-name>CometServlet</servlet-name>
<url-pattern>/conn</url-pattern>
</servlet-mapping>
<listener>
<description>HelloWorld</description>
<listener-class>org.comet4j.demo.helloworld.HelloWorld</listener-class>
</listener>
四:服务端代码示例
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) {
}
}
五:客户端代码示例
<!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="js/comet4j.js"></script>
<script. type="text/javascript">
function init(){
alert(1);
var kbDom = document.getElementById('kb');
JS.Engine.on({
hello : function(kb){//侦听一个channel
kbDom.innerHTML = kb;
}
});
JS.Engine.start('conn');
JS.Engine.on(
'start',function(cId,channelList,engine){
alert('连接已建立,连接ID为:' + cId);
});
}
</script>
</head>
<body nload="init()">
剩余内存:<span id="kb">...</span>KB
</body>
</html>
六:开源的Comet框架
1.jetty
2.pushlet
- 浏览: 1598117 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1585)
- Http Web (18)
- Java (194)
- 操作系统 (2)
- 算法 (30)
- 计算机 (45)
- 程序 (2)
- 性能 (50)
- php (45)
- 测试 (12)
- 服务器 (14)
- Linux (42)
- 数据库 (14)
- 管理 (9)
- 网络 (3)
- 架构 (83)
- 安全 (2)
- 数据挖掘 (16)
- 分析 (9)
- 数据结构 (2)
- 互联网 (6)
- 网络安全 (1)
- 框架 (9)
- 视频 (2)
- 计算机,SEO (3)
- 搜索引擎 (31)
- SEO (18)
- UML (1)
- 工具使用 (2)
- Maven (41)
- 其他 (7)
- 面向对象 (5)
- 反射 (1)
- 设计模式 (6)
- 内存数据库 (2)
- NoSql (9)
- 缓存 (7)
- shell (9)
- IQ (1)
- 源码 (1)
- Js (23)
- HttpClient (2)
- excel (1)
- Spring (7)
- 调试 (4)
- mysql (18)
- Ajax (3)
- JQuery (9)
- Comet (1)
- 英文 (1)
- C# (1)
- HTML5 (3)
- Socket (2)
- 养生 (1)
- 原理 (2)
- 倒排索引 (4)
- 海量数据处理 (1)
- C (2)
- Git (59)
- SQL (3)
- LAMP (1)
- 优化 (2)
- Mongodb (20)
- JMS (1)
- Json (15)
- 定位 (2)
- Google地图 (1)
- memcached (10)
- 压测 (4)
- php.性能优化 (1)
- 励志 (1)
- Python (7)
- 排序 (3)
- 数学 (3)
- 投票算法 (2)
- 学习 (1)
- 跨站攻击 (1)
- 前端 (8)
- SuperFish (1)
- CSS (2)
- 评论挖掘分析 (1)
- Google (13)
- 关键词分析 (1)
- 地图 (1)
- Gzip (1)
- 压缩 (1)
- 爬虫 (13)
- 流量统计 (1)
- 采集 (1)
- 日志分析 (2)
- 浏览器兼容 (1)
- 图片搜索引擎技术 (2)
- 空间 (1)
- 用户体验 (7)
- 免费空间 (1)
- 社交 (2)
- 图片处理 (2)
- 前端工具 (1)
- 商业 (3)
- 淘宝 (3)
- 站内搜索 (1)
- 网站收藏 (1)
- 理论 (1)
- 数据仓库 (2)
- 抓包 (1)
- Hadoop (105)
- 大数据 (6)
- Lucene (34)
- Solr (31)
- Drupal (1)
- 集群 (2)
- Lu (2)
- Mac (4)
- 索引 (9)
- Session共享 (1)
- sorl (10)
- JVM (9)
- 编码 (1)
- taobao (14)
- TCP/IP (4)
- 你可能會感興趣 (3)
- 幽默笑话 (7)
- 服务器整合 (1)
- Nginx (9)
- SorlCloud (4)
- 分佈式搜索 (1)
- ElasticSearch (30)
- 網絡安全 (1)
- MapReduce (8)
- 相似度 (1)
- 數學 (1)
- Session (3)
- 依賴注入 (11)
- Nutch (8)
- 云计算 (6)
- 虚拟化 (3)
- 财务自由 (1)
- 开源 (23)
- Guice (1)
- 推荐系统 (2)
- 人工智能 (1)
- 环境 (2)
- Ucenter (1)
- Memcached-session-manager (1)
- Storm (54)
- wine (1)
- Ubuntu (23)
- Hbase (44)
- Google App Engine (1)
- 短信 (2)
- 矩阵 (1)
- MetaQ (34)
- GitHub &Git &私/公有库 (8)
- Zookeeper (28)
- Exception (24)
- 商务 (1)
- drcp (1)
- 加密&解密 (1)
- 代码自动生成 (1)
- rapid-framework (1)
- 二次开发 (1)
- Facebook (3)
- EhCache (1)
- OceanBase (1)
- Netlog (1)
- 大数据量 (2)
- 分布式 (3)
- 事物 (2)
- 事务 (2)
- JPA (2)
- 通讯 (1)
- math (1)
- Setting.xml (3)
- 络驱动器 (1)
- 挂载 (1)
- 代理 (0)
- 日本語の (1)
- 花生壳 (7)
- Windows (1)
- AWS (2)
- RPC (11)
- jar (2)
- 金融 (1)
- MongDB (2)
- Cygwin (1)
- Distribute (1)
- Cache (1)
- Gora (1)
- Spark (31)
- 内存计算 (1)
- Pig (2)
- Hive (21)
- Mahout (17)
- 机器学习 (34)
- Sqoop (1)
- ssh (1)
- Jstack (2)
- Business (1)
- MapReduce.Hadoop (1)
- monitor (1)
- Vi (1)
- 高并发 (6)
- 海量数据 (2)
- Yslow (4)
- Slf4j (1)
- Log4j (1)
- Unix (3)
- twitter (2)
- yotube (0)
- Map-Reduce (2)
- Streaming (1)
- VMware (1)
- 物联网 (1)
- YUI (1)
- LazyLoad (1)
- RocketMQ (17)
- WiKi (1)
- MQ (1)
- RabbitMQ (2)
- kafka (3)
- SSO (8)
- 单点登录 (2)
- Hash (4)
- Redis (20)
- Memcache (2)
- Jmeter (1)
- Tsung (1)
- ZeroMQ (1)
- 通信 (7)
- 开源日志分析 (1)
- HDFS (1)
- zero-copy (1)
- Zero Copy (1)
- Weka (1)
- I/O (1)
- NIO (13)
- 锁 (3)
- 创业 (11)
- 线程池 (1)
- 投资 (3)
- 池化技术 (4)
- 集合 (1)
- Mina (1)
- JSMVC (1)
- Powerdesigner (1)
- thrift (6)
- 性能,架构 (0)
- Web (3)
- Enum (1)
- Spring MVC (15)
- 拦截器 (1)
- Web前端 (1)
- 多线程 (1)
- Jetty (1)
- emacs (1)
- Cookie (2)
- 工具 (1)
- 分布式消息队列 (1)
- 项目管理 (2)
- github (21)
- 网盘 (1)
- 仓库 (3)
- Dropbox (2)
- Tsar (1)
- 监控 (3)
- Argo (2)
- Atmosphere (1)
- WebSocket (5)
- Node.js (6)
- Kraken (1)
- Cassandra (3)
- Voldemort (1)
- VoltDB (2)
- Netflix (2)
- Hystrix (1)
- 心理 (1)
- 用户分析 (1)
- 用户行为分析 (1)
- JFinal (1)
- J2EE (1)
- Lua (2)
- Velocity (1)
- Tomcat (3)
- 负载均衡 (1)
- Rest (2)
- SerfJ (1)
- Rest.li (1)
- KrakenJS (1)
- Web框架 (1)
- Jsp (2)
- 布局 (2)
- NowJs (1)
- WebSoket (1)
- MRUnit (1)
- CouchDB (1)
- Hiibari (1)
- Tiger (1)
- Ebot (1)
- 分布式爬虫 (1)
- Sphinx (1)
- Luke (1)
- Solandra (1)
- 搜素引擎 (1)
- mysqlcft (1)
- IndexTank (1)
- Erlang (1)
- BeansDB (3)
- Bitcask (2)
- Riak (2)
- Bitbucket (4)
- Bitbuket (1)
- Tokyo Cabinet (2)
- TokyoCabinet (2)
- Tokyokyrant (1)
- Tokyo Tyrant (1)
- Memcached协议 (1)
- Jcrop (1)
- Thead (1)
- 详设 (1)
- 问答 (2)
- ROM (1)
- 计算 (1)
- epoll (2)
- libevent (1)
- BTrace (3)
- cpu (2)
- mem (1)
- Java模板引擎 (1)
- 有趣 (1)
- Htools (1)
- linu (1)
- node (3)
- 虚拟主机 (1)
- 闭包 (1)
- 线程 (1)
- 阻塞 (1)
- LMAX (2)
- Jdon (1)
- 乐观锁 (1)
- Disruptor (9)
- 并发 (6)
- 为共享 (1)
- volatile (1)
- 伪共享 (1)
- Ringbuffer (5)
- i18n (2)
- rsync (1)
- 部署 (1)
- 压力测试 (1)
- ORM (2)
- N+1 (1)
- Http (1)
- web开发脚手架 (1)
- Mybatis (1)
- 国际化 (2)
- Spring data (1)
- R (4)
- 网络爬虫 (1)
- 条形码 (1)
- 等比例缩放 (1)
- java,面向接口 (1)
- 编程规范 (1)
- CAP (1)
- 论文 (1)
- 大数据处理 (1)
- Controller (3)
- CDN (2)
- 程序员 (1)
- Spring Boot (3)
- sar (1)
- 博弈论 (1)
- 经济 (1)
- Scrapy (1)
- Twistedm (1)
- cron (1)
- quartz (1)
- Debug (1)
- AVO (1)
- 跨语言 (1)
- 中间服务 (2)
- Dubbo (4)
- Yarn (1)
- Spring OSGI (1)
- bundle (1)
- OSGI (1)
- Spring-Boot (1)
- CA证书 (1)
- SSL (1)
- CAS (7)
- FusionCharts (5)
- 存储过程 (3)
- 日志 (2)
- OOP (2)
- CentOS (5)
- JSONP (2)
- 跨域 (5)
- P3P (1)
- Java Cas (1)
- CentOS 6.5 Released – Installation Guide with Screenshots (1)
- Android (1)
- 队列 (2)
- Multitail (1)
- Maout (1)
- nohup (1)
- AOP (1)
- 长连接 (3)
- 轮循 (2)
- 聊天室 (1)
- Zeus (1)
- LSM-Tree (1)
- Slope One (1)
- 协同过滤 (1)
- 服务中间件 (1)
- KeyMeans (1)
- Bitmap (1)
- 实时统计 (1)
- B-Tree+ (1)
- PageRank (1)
- 性能分析 (1)
- 性能测试 (1)
- CDH (10)
- 迭代计算 (1)
- Jubatus (1)
- Hadoop家族 (8)
- Cloudera (2)
- RHadoop (1)
- 广告定价 (1)
- 广告系统 (9)
- 广告系统,架构 (1)
- Tag推荐算法 (1)
- 相似度算法 (1)
- 页面重构 (2)
- 高性能 (6)
- Maven3 (3)
- Gradle (11)
- Apache (1)
- Java并发 (1)
- Java多进程 (1)
- Rails (1)
- Ruby (3)
- 系统架构 (1)
- 运维 (36)
- 网页设计 (1)
- TFS (0)
- 推荐引擎 (0)
- Tag提取算法 (1)
- 概率统计 (1)
- 自然语言处理 (2)
- 分词 (1)
- Ruby.Python (1)
- 语义相似度 (0)
- Chukwa (0)
- 日志收集系统 (0)
- Data Mining (4)
- 开放Api (1)
- Scala (28)
- Ganglia (2)
- mmap (1)
- 贝叶斯分类 (1)
- 运营 (1)
- Mdrill (1)
- Lambda (2)
- Netty (5)
- Java8 (1)
- Solr4 (1)
- Akka (12)
- 计算广告 (2)
- 聊天系统 (1)
- 服务发现 (1)
- 统计指标 (1)
- NLP (1)
- 深度学习 (0)
最新评论
-
wahahachuang5:
web实时推送技术使用越来越广泛,但是自己开发又太麻烦了,我觉 ...
使用 HTML5 WebSocket 构建实时 Web 应用 -
秦时明月黑:
Jetty 服务器架构分析 -
chenghaitao111111:
楼主什么时候把gecko源码分析一下呢,期待
MetaQ技术内幕——源码分析(转) -
qqggcc:
为什么还要写代码啊,如果能做到不写代码就把功能实现就好了
快速构建--Spring-Boot (quote) -
yongdi2:
好厉害!求打包代码
Hadoop日志文件分析系统
发表评论
-
RESTful API 设计
2017-01-13 11:06 589目前互联网上充斥着大 ... -
ConcurrentModificationException and a HashMap
2017-01-09 19:59 517Iterator it = map.entrySet().i ... -
Java Class卸载与ClassLoader ,class热替换
2016-12-30 11:10 1808JVM中的Class只有满足以下三个条件,才能被GC回收, ... -
java:找出占用CPU资源最多的那个线程(HOW TO)
2016-10-21 13:11 0在这里对linux下、sun(oracle) JDK的线程 ... -
(转)一次让人难以忘怀的排查频繁Full GC过程
2016-10-21 13:08 514我们的Java应用因频繁FULL GC导致性能降低很多,经 ... -
(转)关于施用full gc频繁的分析及解决
2016-10-21 13:10 1036分析 当频繁full gc时,jstack打印出堆栈信息如 ... -
(转)How to Monitor Java Garbage Collection
2016-10-21 13:05 489This is the second article in ... -
(转)Understanding Java Garbage Collection
2016-10-21 13:04 449What are the benefits of knowi ... -
(转)How to Tune Java Garbage Collection
2016-10-21 13:02 590This is the third article in t ... -
高并发---限流
2016-08-16 11:20 1623在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。 ... -
java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结
2016-08-03 11:53 2809堆大小设置 JVM 中 ... -
Java注解与拦截器
2016-06-23 09:56 2630简介 Annotation(注解),也叫元数据。一种代码级 ... -
ExecutorCompletionService
2016-06-22 12:53 540当我们通过Executor提交一组并发执行的任务,并且希望在 ... -
java获得CPU使用率,内存使用率
2016-06-14 16:29 1742linux下Cpu获取方 ... -
CountDownLatch
2016-06-02 13:43 449Java的concurrent包里面的CountDownL ... -
Cron 表达式
2016-05-31 17:53 5491. cron表达式格式: {秒数} {分钟} {小时 ... -
maven 刷新
2015-06-11 11:35 892mvn clean install -e -U -e详细 ... -
java多线程总结五:线程池的原理及实现
2015-05-26 12:49 8961、线程池简介: ... -
BlockingQueue
2015-04-28 15:29 0前言: 在新增的Concurrent包中,B ... -
Java多线程-新特征-信号量Semaphore
2015-04-24 10:57 820简介信号量(Semaphore),有时被称为信号灯,是在多 ...
相关推荐
javaweb消息推送 基于comet实现局域网内部通讯(聊天室)demo 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。 消息缓存机制,确保长轮询工作模式下不丢失...
这个项目是基于tomcat,comet4j的技术来实现推送消息到web页面,可以直接导入,直接运行的,里面包含了项目所需要的comet4j-tomcat7.jar(tomcat7的就导入这个),comet4j.js(页面引入这个js),等jar包,对于想要学习...
本文将深入探讨“C#消息推送源码”这一主题,结合标签“dwr”,“comet”,“消息推送”,“反推送”以及“源码”,来解析相关的知识点。 首先,让我们了解一下消息推送的概念。消息推送是网络应用程序中一种技术,...
使用Comet4J,开发者可以创建服务端的推送通道,通过这些通道,服务器能够将数据高效地推送到多个客户端。Comet4J提供了多种推送模式,如轮询、流、隐藏IFrame等,以适应不同的网络环境和浏览器兼容性需求。 在...
### JAVA消息推送源程序知识点详解 #### 一、概述 本文档主要介绍了一种基于Java技术的消息推送系统,特别强调了使用WebSocket协议进行实时通信的方法。文档提到了几种不同的消息推送方式,包括长轮询、WebSocket及...
Pushlet Java 消息实时推送是一个典型的技术实现,它允许服务端主动向客户端发送数据,无需客户端持续轮询,极大地提高了效率和用户体验。在这个简单的消息推送实例中,特别强调了解决中文错误问题,这意味着它已经...
Tomcat是一个流行的开源Java Servlet容器,这些JAR文件允许comet4j与Tomcat集成,使开发者能够在Tomcat环境下利用Comet技术进行服务端推送。 【标签】"comet 长轮询 服务端推送"揭示了comet4j的核心功能和工作原理...
Comet4J是一个微型的即时推送框架,它分为服务端与客户端两部分,你只要将服务器端(JAR文件,目前仅支持Tomcat6、7)放入WEB-INF\lib,客户端(JavaScript文件)引入到页面,那么你的应用就具备了向客户端推送信息的...
广播是服务端推技术中的常见应用场景,比如在聊天室或直播平台上,服务器需要将一条消息同时推送到所有在线用户。 压缩包"ServerPushDemos"中可能包含多个Server-side Push的示例代码,涵盖了不同技术的实现,例如...
2. **创建Java服务端接口**: 定义一个Java服务,该服务包含用于推送消息的方法。这个方法应该处理来自客户端的请求,并将消息存储在一个队列中,等待推送。 3. **实现JavaScript接口**: 在客户端,创建一个...
本文将详细探讨如何通过JAVA实现多种服务器推送客户端的方式,包括Ajax轮询、长连接、长轮询以及Iframe刷新。 1. **Ajax轮询** Ajax轮询是最基础的实现方式,其原理是客户端定时发送Ajax请求到服务器,服务器接收...
总结来说,"Tomcat+Comet实现终端与服务端同步的小例子"是一个学习实时通信和服务器推送技术的好起点。通过这个例子,开发者可以了解如何利用现有Web服务器的特性,创建高效、实时的Web应用。同时,这也是对传统HTTP...
在这个DEMO中,我们可能看到如何设置DWR的配置文件,创建Java服务端接口,以及编写JavaScript客户端代码来接收和处理服务器推送的数据。 **comet.tld**文件是JSP标签库描述符(Tag Library Descriptor),在DWR的...
3. **创建Java后端**:编写Java服务端代码,包含Comet逻辑,如处理事件、存储会话状态和推送数据。 4. **编写JavaScript前端**:利用DWR API,创建前端接口来调用Java方法,接收服务器推送的数据。 5. **测试和优化*...
Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线...
Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线、...
Comet4j是一种基于Java的服务器推送技术,它允许服务器主动向客户端发送数据,而无需客户端不断轮询请求。在Web应用中,这种技术能够显著提高实时性,尤其是在实时聊天、股票更新、在线游戏等场景中表现优异。该...
DWR引入了“心跳”机制和“反向AJAX”(Comet)技术,实现了服务器向客户端的实时推送。当服务器有新消息时,会主动将消息推送到已连接的客户端,而不是等待客户端发起请求。 ### 2. DWR服务器推送实现步骤 - **...
Comet4J是一个Java库,专门用于实现 comet 技术,这是一种服务器推送技术,使得服务器可以主动向客户端发送数据,而不仅仅是响应客户端的请求。在Web应用中,这种技术能够实现实时通信,常用于在线聊天、股票更新、...