`
123123ghiwjn
  • 浏览: 24892 次
  • 性别: Icon_minigender_2
  • 来自: 陕西
社区版块
存档分类
最新评论

dwr comet

    博客分类:
  • ajax
阅读更多

dwr的Reverse Ajax,新瓶装老酒,其实就是comet技术,即服务端向客户端push js代码,典型的应用场景就是目前比较火的比赛图文直播,还有聊天室等,消息订阅模式的一种实现。

优点:控制权反转,打开一个网页(或进行一次操作)后,订阅了一个消息,一个客户端服务端连接将维持,服务端检测到数据更新,将自动push数据到客户端,这样服务端对于程序调动的灵活性更加大,避免了客户端大量的循环请求数据。

缺点:连接维持,访问数量一大连接数将很快饱和。

关于comet优点比较权威的阐述:Ajax improves single-user responsiveness. Comet improves application responsiveness for collaborative, multi-user applications and does it without the performance headaches associated with intermittent polling.

看一下dwr官方示例,很简单的clock实现:

html代码:

Html代码 复制代码
  1. <input type="button" value="Start / Stop" onclick="Clock.toggle();"/> <h2 id="clockDisplay"></h2>  
<input type="button" value="Start / Stop" onclick="Clock.toggle();"/> <h2 id="clockDisplay"></h2>


js代码就一行,打开相应属性:
dwr.engine.setActiveReverseAjax(true);
服务端clock类:

Java代码 复制代码
  1.   
  2. public class Clock implements Runnable {   
  3.     public Clock() {   
  4.         ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);   
  5.         executor.scheduleAtFixedRate(this11, TimeUnit.SECONDS);   
  6.     }   
  7.   
  8.     public void run() {   
  9.         if (active) {   
  10.             setClockDisplay(new Date().toString());   
  11.         }   
  12.     }   
  13.   
  14.     /**  
  15.      * Called from the client to turn the clock on/off  
  16.      */  
  17.     public synchronized void toggle() {   
  18.         active = !active;   
  19.   
  20.         if (active) {   
  21.             setClockDisplay("Started");   
  22.         }   
  23.         else {   
  24.             setClockDisplay("Stopped");   
  25.         }   
  26.     }   
  27.   
  28.     /**  
  29.      * Actually alter the clients.  
  30.      * @param output The string to display.  
  31.      */  
  32.     public void setClockDisplay(final String output) {   
  33.         String page = ServerContextFactory.get().getContextPath() + "/reverseajax/clock.html";   
  34.         Browser.withPage(page, new Runnable() {   
  35.             public void run() {   
  36.                 Util.setValue("clockDisplay", output);   
  37.             }   
  38.         });   
  39.     }   
  40.   
  41.     protected transient boolean active = false;   
  42. }  
public class Clock implements Runnable {
    public Clock() {
        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
        executor.scheduleAtFixedRate(this, 1, 1, TimeUnit.SECONDS);
    }

    public void run() {
        if (active) {
            setClockDisplay(new Date().toString());
        }
    }

    /**
     * Called from the client to turn the clock on/off
     */
    public synchronized void toggle() {
        active = !active;

        if (active) {
            setClockDisplay("Started");
        }
        else {
            setClockDisplay("Stopped");
        }
    }

    /**
     * Actually alter the clients.
     * @param output The string to display.
     */
    public void setClockDisplay(final String output) {
        String page = ServerContextFactory.get().getContextPath() + "/reverseajax/clock.html";
        Browser.withPage(page, new Runnable() {
            public void run() {
                Util.setValue("clockDisplay", output);
            }
        });
    }

    protected transient boolean active = false;
}


个人设想:这个特性可以用来远程实时监控服务器运行状态,服务端自定义调用接口,定义一套xml协议来实时传送数据,也可以利用Web Service。

分享到:
评论
3 楼 fantasyshe 2010-10-19  
没有代码下载,没真相
2 楼 high_java 2010-08-24  
sorry, 点错了
1 楼 high_java 2010-08-24  

相关推荐

    dwr comet的MyEclipse工程,可直接运行

    标题 "dwr comet的MyEclipse工程,可直接运行" 提供了我们今天要讨论的核心内容,即一个基于DWR(Direct Web Remoting)技术的Comet应用,它已经被集成到MyEclipse环境中,并且是可立即运行的状态。首先,我们需要...

    Spring整合DWR comet 实现无刷新 多人聊天室代码整理

    Spring整合DWR(Direct Web Remoting)和Comet技术,是一种高效的实现Web应用程序实时通信的解决方案,特别适用于创建如多人聊天室这样的实时交互应用。在这个项目中,Spring作为后端框架,负责业务逻辑处理和控制...

    DWR comet的完整实现.pdf

    ### DWR Comet 的完整实现分析 #### 一、引言 DWR (Direct Web Remoting) 是一种简化Ajax开发的框架,它使得JavaScript能够直接调用服务器端的Java方法,从而实现了更为流畅的用户交互体验。Comet技术则是一种允许...

    DWR comet 长连接实现在线对话-简易版

    NULL 博文链接:https://happysoul.iteye.com/blog/1313069

    用DWR comet+Spring实现服务器推送的例子--网页聊天室

    标题中的“用DWR comet+Spring实现服务器推送的例子--网页聊天室”涉及到的是Web开发中的实时通信技术。DWR(Direct Web Remoting)是一个开源Java库,它允许JavaScript在浏览器和服务器之间进行直接的、安全的远程...

    Spring整合DWR comet 实现无刷新 多人聊天室

    Spring整合DWR(Direct Web Remoting)以实现Comet技术,是构建实时、无刷新的多人聊天室的一种高效方法。这种技术允许服务器向客户端推送数据,而无需客户端频繁发起请求,从而大大提升了用户体验。下面我们将深入...

    dwr-comet.zip_DEMO_comet_dwr comet_dwr comet_消息推送 java

    实现Comet消息推送功能,根据登陆人定向推送,解决刷新页面原有ScriptSession不能及时销毁的问题,DEMO比较简陋,请先进入login.jsp页面登陆。根据登陆名称判断推送目标,可登陆多个用户进行测试。

    dwr comet 使用示例,使用spring作为后台的管理容器

    在这个示例中,我们将探讨如何结合DWR 3.0和Spring 2.5框架来实现Comet交互。** **1. DWR(Direct Web Remoting)** DWR使得Web开发者能够轻松地在浏览器和服务器之间交换数据。它通过创建JavaScript对象,这些对象...

    DWR学习资料

    DWR学习资料 :DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0学习笔记.txt DWR3.0学习网址.txt dwr分页.doc DWR分页代码.doc DWR中文文档.doc DWR中文文档.pdf dwr做comet的完整实现.doc Spring整合DWR comet ...

    dwr与spring整合的相关资料收集 包括一个例子 dwr-comet

    8. **DWR Comet**: `dwr-comet`可能指的是DWR的Comet技术,这是一种长连接技术,可以让服务器主动推送数据到客户端,实现双向通信。DWR的Comet支持可以与Spring的事件驱动模型结合,创建实时更新的应用。 这个资料...

    DWR_comet_0100.zip_ChatService.js_DWR_comet_0100_comet_dwr SPRIN

    标签中提到的`dwr_comet_0100`和`comet`指的就是DWR的Comet功能,`dwr_spring`表示DWR与Spring框架的整合。整合DWR和Spring可以使我们更方便地管理服务bean,以及利用Spring的依赖注入和事务管理等功能。`dwr_push`...

    dwr_comet_im.rar_DEMO_comet.tld_java comet

    在这个"**dwr_comet_im.rar_DEMO_comet.tld_java comet**"的压缩包中,包含了一个关于DWR实现Comet技术的DEMO,以及一个名为"DWR的comet技术实现及时通讯原理.docx"的文档,这将帮助我们理解如何利用DWR和Comet实现...

    用DWR的comet推,实现多人聊天室

    【标题】: 使用DWR的Comet推送技术创建多人聊天室 【描述】: 本文主要探讨如何通过Spring与Direct Web Remoting (DWR)框架的整合,利用Comet技术来构建一个无需刷新页面的多人在线聊天室。Comet是一种实现服务器到...

    DWRComet多人web聊天例子

    DWR comet 多人web聊天例子。

    DWR+JAVA进行web消息推送dwr-comet.zip

    在DWR中,Comet技术是实现长时间连接和实时数据推送的关键。 首先,我们需要了解Comet技术的基本概念。Comet是一种Web编程模式,用于实现在服务器向客户端推送数据时保持持久连接。传统的HTTP协议是基于请求-响应...

    dwr笔记 dwr自学资料

    DWR (Direct Web Remoting) 是一种开源Java技术,它允许Web应用程序在浏览器和服务器之间进行实时、双向通信,使得JavaScript可以直接调用服务器端的Java方法,极大地简化了客户端和服务器端的数据交换。本笔记将...

    Comet,反向Ajax,直接就能跑

    dwr comet 反向ajax实力 直接抛 我打了一个包, 放到Tomcat,jetty下面就能直接跑了 很方便 还有注视 对新手 。。。。很好的

    DWR的Comet测试,又称反Ajax(ReverseAjax),使用DWR3.0 + Spring 2.5

    comet.jsp就是聊天室接收消息的界面,action.jsp就是发送消息的界面,为了更好的说明问题,将接收界面和发送界面放在两个窗口中, 测试时同时可以打开多个接收界面和发送界面, 执行发送界面的发送按钮会发现在所有...

    dwr 反推技术

    在"通过dwr反推技术实现web聊天无刷新跟新技术"这个主题中,我们将深入探讨DWR如何用于构建实时聊天应用,并结合Comet技术来优化用户体验。 首先,DWR的工作原理基于Ajax(Asynchronous JavaScript and XML),但...

    dwr spring服务器主动推送示例代码

    3. **Reverse AJAX/Comet**: DWR的特色之一是其支持服务器主动推送,即服务器在接收到新数据时,可以直接将数据推送到客户端,而不是等待客户端的请求。 接下来,我们将介绍如何在Spring环境中配置和使用DWR: 1. ...

Global site tag (gtag.js) - Google Analytics