`
wbj0110
  • 浏览: 1598117 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Java--Comet之服务端消息推送

阅读更多

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

 
分享到:
评论

相关推荐

    javaweb消息推送 基于comet实现局域网内部通讯(聊天室)demo

    javaweb消息推送 基于comet实现局域网内部通讯(聊天室)demo 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。 消息缓存机制,确保长轮询工作模式下不丢失...

    基于tomact,comet4j,java服务器端推送消息到web页面

    这个项目是基于tomcat,comet4j的技术来实现推送消息到web页面,可以直接导入,直接运行的,里面包含了项目所需要的comet4j-tomcat7.jar(tomcat7的就导入这个),comet4j.js(页面引入这个js),等jar包,对于想要学习...

    C#消息推送源码

    本文将深入探讨“C#消息推送源码”这一主题,结合标签“dwr”,“comet”,“消息推送”,“反推送”以及“源码”,来解析相关的知识点。 首先,让我们了解一下消息推送的概念。消息推送是网络应用程序中一种技术,...

    web推送 comet技术

    使用Comet4J,开发者可以创建服务端的推送通道,通过这些通道,服务器能够将数据高效地推送到多个客户端。Comet4J提供了多种推送模式,如轮询、流、隐藏IFrame等,以适应不同的网络环境和浏览器兼容性需求。 在...

    JAVA消息推送源程序

    ### JAVA消息推送源程序知识点详解 #### 一、概述 本文档主要介绍了一种基于Java技术的消息推送系统,特别强调了使用WebSocket协议进行实时通信的方法。文档提到了几种不同的消息推送方式,包括长轮询、WebSocket及...

    pushlet java 消息实时推送

    Pushlet Java 消息实时推送是一个典型的技术实现,它允许服务端主动向客户端发送数据,无需客户端持续轮询,极大地提高了效率和用户体验。在这个简单的消息推送实例中,特别强调了解决中文错误问题,这意味着它已经...

    comet4j完整包

    Tomcat是一个流行的开源Java Servlet容器,这些JAR文件允许comet4j与Tomcat集成,使开发者能够在Tomcat环境下利用Comet技术进行服务端推送。 【标签】"comet 长轮询 服务端推送"揭示了comet4j的核心功能和工作原理...

    Comet4J服务器端推送技术

    Comet4J是一个微型的即时推送框架,它分为服务端与客户端两部分,你只要将服务器端(JAR文件,目前仅支持Tomcat6、7)放入WEB-INF\lib,客户端(JavaScript文件)引入到页面,那么你的应用就具备了向客户端推送信息的...

    服务端推技术 - Server-side Push 多示例

    广播是服务端推技术中的常见应用场景,比如在聊天室或直播平台上,服务器需要将一条消息同时推送到所有在线用户。 压缩包"ServerPushDemos"中可能包含多个Server-side Push的示例代码,涵盖了不同技术的实现,例如...

    DWR3实现服务器端向客户端精确推送消息

    2. **创建Java服务端接口**: 定义一个Java服务,该服务包含用于推送消息的方法。这个方法应该处理来自客户端的请求,并将消息存储在一个队列中,等待推送。 3. **实现JavaScript接口**: 在客户端,创建一个...

    多种方式模拟服务器推送客户端

    本文将详细探讨如何通过JAVA实现多种服务器推送客户端的方式,包括Ajax轮询、长连接、长轮询以及Iframe刷新。 1. **Ajax轮询** Ajax轮询是最基础的实现方式,其原理是客户端定时发送Ajax请求到服务器,服务器接收...

    tomcat+comet实现终端与服务端同步的小例子

    总结来说,"Tomcat+Comet实现终端与服务端同步的小例子"是一个学习实时通信和服务器推送技术的好起点。通过这个例子,开发者可以了解如何利用现有Web服务器的特性,创建高效、实时的Web应用。同时,这也是对传统HTTP...

    dwr_comet_im.rar_DEMO_comet.tld_java comet

    在这个DEMO中,我们可能看到如何设置DWR的配置文件,创建Java服务端接口,以及编写JavaScript客户端代码来接收和处理服务器推送的数据。 **comet.tld**文件是JSP标签库描述符(Tag Library Descriptor),在DWR的...

    面向 Java 开发人员的 Ajax: 使用 Jetty 和 Direct Web Remoting 编写可扩展的 Comet 应用程序

    3. **创建Java后端**:编写Java服务端代码,包含Comet逻辑,如处理事件、存储会话状态和推送数据。 4. **编写JavaScript前端**:利用DWR API,创建前端接口来调用Java方法,接收服务器推送的数据。 5. **测试和优化*...

    服务推送框架 come4js

    Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线...

    comet4j一整套官方出品前后端jar包,js,Demo包

    Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线、...

    comet4j整套开发包最新版

    Comet4j是一种基于Java的服务器推送技术,它允许服务器主动向客户端发送数据,而无需客户端不断轮询请求。在Web应用中,这种技术能够显著提高实时性,尤其是在实时聊天、股票更新、在线游戏等场景中表现优异。该...

    DWR服务器推送技术实现WebQQ

    DWR引入了“心跳”机制和“反向AJAX”(Comet)技术,实现了服务器向客户端的实时推送。当服务器有新消息时,会主动将消息推送到已连接的客户端,而不是等待客户端发起请求。 ### 2. DWR服务器推送实现步骤 - **...

    comet4j

    Comet4J是一个Java库,专门用于实现 comet 技术,这是一种服务器推送技术,使得服务器可以主动向客户端发送数据,而不仅仅是响应客户端的请求。在Web应用中,这种技术能够实现实时通信,常用于在线聊天、股票更新、...

Global site tag (gtag.js) - Google Analytics