`
wukele
  • 浏览: 33528 次
  • 性别: Icon_minigender_1
  • 来自: 泉州
社区版块
存档分类
最新评论

dwr 3 ActiveReverseAjax 推技术 反转 实现 ScriptSession 过滤 发送到指定客户端

阅读更多

1.参考网上人家 dwr2.0 是怎么保存每个客户端的ScriptSession,可以保持客户端id,也可以通过设置ScriptSession的属性来达到目的。

 

2.参考下面的方面来实现过滤。

 

 

Browser.withPageFiltered(page,new JsSessionFilter()  ,new Task()); 

 

JsSessionFilter类代码如下

 

package com.thinkdual.extend.dwr;

import java.util.List;

import org.directwebremoting.ScriptSession;
import org.directwebremoting.ScriptSessionFilter;

import com.thinkdual.cfg.user.CfgUser;
import com.thinkdual.extend.listener.OnLineUser;
import com.thinkdual.util.StrUtil;

/**
 * ---------------------------------------------<br>
 * 过滤那些用户没必要收到消息<br>
 * <br>
 * Version: 1.0<br>
 * Author: wuqingshun<wukele@gmail.com><br>
 * DateTime: 2011-1-24 上午11:48:03<br>
 * ---------------------------------------------<br>
 * 修改版本历史<br>
 * *********************************************<br>
 * Author:<br>
 * DateTime:<br>
 * 内容:<br>
 * *********************************************<br>
 */

public class JsSessionFilter implements ScriptSessionFilter {
    private String roleids = "";
    
    public JsSessionFilter(String roleids) { 
        this.roleids = roleids;
    }
/**
 * 如果返回ture,则该ScriptSession发送信息,返回false则该ScriptSession过滤掉。
 */
    @Override
    public boolean match(ScriptSession scriptSession) { 
      
        String userUnid = (String) scriptSession.getAttribute("userUnid");
        userUnid = StrUtil.checkNull(userUnid);
        List<CfgUser> users = OnLineUser.users;  
 
        if("".equals(userUnid)) return false;
        if("".equals(roleids)) return true;
        for(int i = 0; i < users.size();i++) {
            CfgUser user = users.get(i); 
 
            if( user.getUnid().equals(userUnid)) { 
                return true;
            } 
        }  
        return false;
    }

}

 Task类

 

package com.thinkdual.extend.dwr;

import java.util.Collection;
import java.util.Iterator;

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

/**
 * ---------------------------------------------<br>
 * 说明<br>
 * <br>
 * Version: 1.0<br>
 * Author: wuqingshun<wukele@gmail.com><br>
 * DateTime: 2011-1-24 下午06:47:11<br>
 * ---------------------------------------------<br>
 * 修改版本历史<br>
 * *********************************************<br>
 * Author:<br>
 * DateTime:<br>
 * 内容:<br>
 * *********************************************<br>
 */

public class Task implements Runnable {
    private String msg = "";

    public Task(String msg) {
        this.msg = msg;
    }

    @Override
    public void run() {
        //获取所有根据我们写的过滤器返回true的ScriptSession
//网上很多都是调用ScriptSessions.addScript(scriptString)这个对所有客户端都发送信息
        Collection sessions = Browser.getTargetSessions(); 
        ScriptSession scriptSession;
        for (Iterator i = sessions.iterator(); i.hasNext();) {
            scriptSession = (ScriptSession) i.next();
            ScriptBuffer scriptbuffer = new ScriptBuffer("openMsg('" +       msg + "');");
            scriptSession.addScript(scriptbuffer);
        }
    }

}

 

分享到:
评论

相关推荐

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

    在“DWR3实现服务器端向客户端精确推送消息”这一主题中,我们将深入探讨如何利用DWR3进行服务器到客户端的消息推送,以及这种技术的优势和应用。 首先,理解DWR3的工作原理是至关重要的。DWR3通过建立一个安全的...

    dwr推技术反转聊天事例

    DWR (Direct Web Remoting) 是一种开源的Java技术,它允许Web应用程序在客户端和服务器之间进行实时的、双向的数据交换,从而实现类似桌面应用的交互体验。在“dwr推技术反转聊天事例”中,我们将探讨DWR如何用于...

    dwr推技术实现服务器推送数据

    DWR的推技术则解决了这个问题,它允许服务器在数据更新时立即推送到客户端,从而实现更实时、更高效的用户体验。 DWR的工作原理是通过在服务器端创建一个Java对象,这个对象暴露了若干方法供客户端JavaScript调用。...

    dwr3推送消息

    总的来说,DWR3的推送消息功能是实现Web应用实时性的有效手段,它通过持久化的HTTP连接实现了服务器到客户端的数据推送,简化了实时通信的开发过程。理解和掌握这一技术,对于构建高效的交互式Web应用具有重要意义。

    dwr 实现推技术 实例

    5. **推送技术**:DWR的推技术利用了JavaScript的`poll`和`callback`机制,服务器端可以周期性检查新消息,并通过DWR自动调用客户端的回调函数,将新消息推送到客户端。 6. **实时显示**:在客户端,使用AJAX更新...

    dwr3 全推 半推实现

    `Browser.withCurrentPageFiltered`就是用来实现半推的,它允许你指定只向当前页面或满足某些条件的页面发送数据。 在DWR 3中,实现全推和半推的关键在于配置和使用DWR的接口。首先,你需要在服务器端创建一个DWR...

    dwr3实现推送功能

    本篇文章将详细讲解如何利用DWR 3实现推送功能。 1. **DWR 3 的基本概念** DWR 3 提供了一种安全、高效的机制,使得JavaScript可以调用Java方法,并将结果返回到页面上。这种机制是基于HTTP的异步请求,因此无需...

    dwr demo 反向推送 导向推送

    这个"**dwr demo 反向推送 导向推送**"是一个示例项目,展示了如何利用DWR来实现反向推送技术,也称为服务器推送。这种技术允许服务器主动地将数据推送到客户端,而不需要客户端不断地发起请求。 在传统的HTTP协议...

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

    总的来说,DWR推送技术通过Comet实现了高效的服务器到客户端的数据推送,简化了实时Web应用的开发。结合提供的源码示例"j-jetty-dwr-comet-src",开发者可以深入理解DWR的工作原理,并学习如何在实际项目中应用这项...

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

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

    dwr推技术官方实例

    压缩包内的"chat(dwrAjax反转)"文件可能是DWR聊天室的示例,它展示了如何使用DWR的推技术实现一个简单的实时聊天应用。在这个示例中,用户可以通过JavaScript与服务器进行交互,发送消息,同时服务器也能在接收到新...

    使用dwr推技术实现站内聊天室,可对所有人和指定人发送消息

    用户输入的消息通过DWR调用发送到服务器,同时,DWR Push机制会将新收到的消息实时推送到客户端,更新聊天窗口。 4. **后端实现**: 在Java后端,我们需要创建一个DWR配置文件(通常为`dwr.xml`),定义允许的远程...

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

    通过DWR的Push技术,服务器可以主动向客户端推送消息,而不仅仅是响应客户端的请求。这种模式在群聊系统中特别有用,因为它可以让所有在线用户实时接收到新消息,无需频繁轮询服务器。 **3. 流技术** 在聊天系统中...

    dwr实现的服务器推demo

    服务器推是一种技术,它允许服务器主动地将数据发送到客户端,而不需要客户端(通常是Web浏览器)发起新的请求。这对于实时性要求高的应用,如聊天室、股票报价或者在线游戏等,是非常关键的。传统的HTTP协议是基于...

    DWR服务器推送技术实现WebQQ

    用户可以选择与某个好友或群组进行对话,消息发送后,DWR会将消息发送到服务器,并推送给指定的接收方。 - **实时状态更新**:除了消息推送,DWR还可以用于在线状态的实时更新。当用户上线、下线或更改状态时,其他...

    DWR服务器推送技术(实时)

    但在服务器推送技术中,服务器主动将数据推送到客户端,而无需客户端发起新的请求。这种技术对于实时性要求高的应用,如聊天室、股票交易、在线游戏等,具有显著优势。 **DWR的服务器推送实现**: DWR使用一种称为...

    dwr实现服务器推技术,兼容低版本IE

    - 实现客户端监听和接收推送数据的逻辑,可能涉及事件处理和数据渲染。 - 在旧版IE上进行测试和优化,确保兼容性。 6. **最佳实践** - 为了提高效率,可以使用长轮询或WebSocket作为服务器推送的备选方案,但...

    dwr3消息推送

    需要注意的是,虽然DWR3已经是一个较老的框架,但其核心思想——Web上的远程调用和实时推送,仍然是现代Web开发中的重要技术。在实际项目中,开发者可能会选择更新的技术,如WebSockets或者Server-Sent Events (SSE)...

    使用dwr2.0实现服务器推客户端

    在Web开发中,"服务器推"是一种技术,允许服务器主动地将数据发送到客户端,而无需客户端发起新的请求。DWR(Direct Web Remoting)是一个开源Java库,它简化了JavaScript和Java之间的交互,使得在Web应用中实现...

    dwr反转AJAX聊天源码

    通过学习和研究这个源码,开发者可以了解到如何使用DWR库实现服务器向客户端的实时数据推送,掌握DWR的基本配置和API使用,同时也能理解如何设计和实现一个简单的聊天系统。这对于理解Ajax通信、提升Web开发技能,...

Global site tag (gtag.js) - Google Analytics