`
ccj
  • 浏览: 16290 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
uii
文章分类
社区版块
存档分类
最新评论

[DWR]使用dwr的“推”实现消息广播的问题

阅读更多
日前在做一个商城系统,甲方要求在客户下订单时,能够实时通知到在线客服所在的管理页面,于是想到用dwr的push来实现。由于之前没用过,写了一个例子。如下:

本例采用Eclipse+JDK1.5+DWR2.0M2+Tomcat5.028开发

管理员端,负责接受消息。
demo1.html
<html>
<HEAD>
<TITLE>管理订单</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type='text/javascript' src='/dwr/engine.js'></script>
<script type='text/javascript' src='/dwr/util.js'></script>
<script language="javascript">
function init()
{
  dwr.engine.setActiveReverseAjax(true);
}

function receiveMessages(id)
{
  document.all.div_area.innerHTML="产生新订单:"+id;
}
</script>

</HEAD>

<body onload="init();">
<div id="div_area">
目前没有订单
</div>
</body>
</html>


模拟下定单
demo.html
<html>
<HEAD>
<TITLE>下订单</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type='text/javascript' src='/dwr/interface/Remote.js'></script>
<script type='text/javascript' src='/dwr/engine.js'></script>
<script type='text/javascript' src='/dwr/util.js'></script>
<script language="javascript">
function doRemote()
{
  Remote.getData();//模拟下订单
}
</script>
</HEAD>
<body>
<input type="text" name="name" />
<input type="text" name="order" />
<input type="button" value="提交" onClick="doRemote();">
</body>
</html>



Remote.java //订单处理
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;

import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;


public class Remote {
public void getData(HttpServletRequest request)
{
  this.noticeNewOrder("JISOD001003");//发送订单号
}

public void noticeNewOrder(String id)
{
  WebContext wctx     = WebContextFactory.get();
  String currentPage  = "/demo1.html";
  ScriptBuffer script = new ScriptBuffer();
  script.appendScript("receiveMessages(").appendData(id).appendScript(");");
  Collection pages    = wctx.getScriptSessionsByPage(currentPage);
  for (Iterator it    = pages.iterator(); it.hasNext();)
  {
    ScriptSession otherSession = (ScriptSession) it.next();
    otherSession.addScript(script);
  }
}

}



dwr配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.ltd.uk/dwr/dwr20.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="Remote">
        <param name="class" value="com.Remote" />
        <include method="noticeNewOrder" />
        <include method="getData" />
    </create>
  </allow>
</dwr>


经调试可以成功,但是响应比较慢,从点击下订单,到管理页面显示下单消息,会经过差不多一分钟的时间,不知道是为什么,使用Tomcat6的NIO也是如此。
分享到:
评论
7 楼 vipmail 2008-12-30  
同上....用起来不爽....还请指点
6 楼 angushj 2008-10-11  
遇到同样的问题了,而且我发现在本机localhost访问时就会很慢,通过网络用其它ip去访问它速度就不慢了~不知道为什么~
5 楼 crabboy 2008-07-11  
dwr的推和pushlet的推有何不同?
4 楼 minghaitang 2008-03-04  
上面是针对某个页面的消息推送,如何实现这对个人的消息推送呢?
3 楼 sunli_qun 2008-01-14  
汗!去看了看,果然是new features
落伍了...
2 楼 ccj 2008-01-14  
半年前啊?那时候是轮询的,现在是基于长连接的,没有产生reflash,好像我发错地方了,有没有管理员帮我转到ajax的dwr中?
1 楼 sunli_qun 2008-01-14  
dwr的ActiveReverseAjax也是轮询的方式实现的(默认情况下)
有一个参数可以调整reflash的时间。真正的push貌似里面也有一些代码,不过没用过

ps:以上结论是基于半年前的记忆,lz需要自己查证正确性!

相关推荐

    dwr3 全推 半推实现

    这个方法会将消息广播到所有已建立的DWR会话,确保所有在线用户都能立即接收到最新的信息。 半推(Half Push),也称为请求响应推送,是在用户触发特定事件时,服务器仅向特定客户端推送更新。这种方式在处理用户...

    DWR推送技术大全 dwr推送聊天实例

    - **事件处理**:在客户端,通常会有一个事件监听器来捕获来自DWR的推送消息,并在界面上显示新消息。 - **用户认证与会话管理**:为了保证安全性,聊天应用通常需要用户认证。DWR可以集成Spring Security等框架进行...

    jsp DWR框架推模式实现的聊天室

    在本项目"jsp DWR框架推模式实现的聊天室"中,我们将探讨如何利用DWR的推送(Push)模式来构建一个实时的在线聊天应用。** 首先,我们需要了解DWR的基本工作原理。DWR通过在浏览器和服务器之间建立一个持久连接,...

    DWR dwr 2.0 dwr推 推 反转ajax 聊天系统 广播系统 字符串加密 历史记录 推技术 聊天系统源码 源码 注释

    这是,以上两个版本的升级版,在原有的基础上,增加了 清空聊天记录,上线通知,用户id,及登录的所在地(ip),聊天信息可选择颜色, ps: 测试的时候记得将 info.txt(聊天信息保存文件) 绝对路径覆盖源码中,以前的路径,

    Dwr 推例子 反转 ajax dwr dwr推群聊 dwr聊天系统源码 聊天系统 广播系统

    在描述中提到的案例是一个使用DWR构建的广播或群聊系统。DWR的实时更新能力使其非常适合用于构建这样的系统。通过DWR的Push技术,服务器可以主动向客户端推送消息,而不仅仅是响应客户端的请求。这种模式在群聊系统...

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

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

    dwr服务器推技术

    7. **JavaScript编程**: 在前端,你需要使用DWR提供的API来调用服务器端的方法,处理接收和发送聊天消息,以及显示在用户界面上。 8. **安全性考虑**: 由于DWR允许直接的跨域调用,因此需要考虑防止XSS和CSRF攻击。...

    dwr+java+mysql实现的推技术聊天

    在DWR的帮助下,服务器可以广播消息到所有在线的聊天室成员,实现即时通信。 【标签】"推技术"指的是服务器主动向客户端推送信息的技术,而非客户端轮询请求。DWR支持这种推送模式,可以显著提升用户体验,因为用户...

    dwr实现前台监控 后台推送即时信息

    在本文中,我们将探讨如何使用DWR实现前台监控并进行后台即时信息推送。 首先,理解DWR的工作原理至关重要。DWR通过在服务器端运行一个Servlet,这个Servlet负责接收JavaScript的请求,执行相应的Java方法,然后将...

    Dwr推送技术实现BS即时通讯

    通过以上分析,我们可以看出"Dwr推送技术实现BS即时通讯"这个项目涉及到了前端与后端的交互、即时通讯机制、数据存储和安全等多个方面的技术,是一个综合性的Web应用开发实践。通过学习和理解这个项目,开发者可以...

    DWR网页聊天例子

    同时,DWR还提供了事件监听机制,用于接收服务器推送的消息,实现实时更新聊天界面。 4. **后端实现** 在服务器端,我们需要创建一个处理聊天逻辑的Java类。这个类可能包括添加新消息到聊天记录、广播消息给所有...

    dwr 推, 广播系统, java 聊天 系统

    DWR通过建立持久化的连接(如Comet技术)来实现"推",当服务器端有新的聊天消息或广播信息时,能够立即传递到所有在线用户。 在这个系统中,聊天信息被加密后再存储在本地的TXT文件中。使用DES(Data Encryption ...

    采用dwr技术实现的聊天室

    总结,通过这个简单的DWR聊天室实例,我们可以了解到DWR在实现动态Web应用中的重要作用,以及如何使用DWR来构建实时交互的Web系统。对于希望提升Web开发技能的开发者来说,深入学习DWR是一个值得投入的方向。

    web聊天,私聊,群聊。dwr实现。无数据库

    在这个项目中,我们关注的是如何使用DWR(Direct Web Remoting)框架来实现一个无需数据库支持的实时在线聊天应用,包括私聊和群聊功能。DWR是一种在浏览器和服务器之间进行实时通信的技术,它允许JavaScript与Java...

    DWR在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能

    4. **即时显示**:当接收者打开聊天窗口时,JavaScript通过DWR定期轮询或者使用长轮询(Long Polling)机制检查新消息,一旦发现新消息,就会立即在页面上显示。 5. **界面交互**:使用jsp页面实现用户界面,包括...

    Dwr推数据Demo

    在这个"Dwr推数据Demo"中,我们看到的是一个基于DWR技术实现的多人聊天室。这个应用展示了如何利用DWR的实时双向通信能力来推送数据到客户端,从而实现聊天室的功能。 首先,让我们深入理解DWR的工作原理。DWR通过...

    DWR3半推方式聊天

    - **服务器端**:使用DWR的半推功能,服务器端监听新的聊天消息,并将它们推送给已建立连接的客户端。 - **客户端**:通过JavaScript与服务器建立长连接,接收服务器推送的消息,并实时更新聊天窗口。 6. **性能...

    基于dwr推送技术的聊天室

    广播通常是通过DWR的推送功能实现的。 4. **实时更新**:当客户端接收到新消息的推送,JavaScript更新页面显示,将新消息添加到聊天记录中。 **安全与优化** 1. **安全性**:使用DWR时,需要注意防止跨站脚本攻击...

    dwr反推简单例子

    在"**dwr反推简单例子**"中,我们将会探讨如何使用DWR进行数据的反向推送,即由服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。 首先,DWR的核心概念包括三个主要部分:`Engine`、`Configuration`和`...

    DWR jquery 聊天室 SSH

    在聊天室的实现过程中,通常会有一个服务器端的组件(可能是由 DWR 提供的)来处理用户的登录、消息存储和广播。一旦用户成功登录,DWR 将在后台运行,监听来自客户端的消息并将其推送给其他在线用户。同时,SSH 会...

Global site tag (gtag.js) - Google Analytics