当前位置: 代码迷 >> J2EE >> dwr 发送给指定用户有关问题
  详细解决方案

dwr 发送给指定用户有关问题

热度:479   发布时间:2016-04-19 22:38:08.0
dwr 发送给指定用户问题
本人按照网上的demo写了一个dwr给指定人员发送信息的程序,但奇怪的问题是在对比人员id的时候,即使id不相等的用户也会受到信息,纠结了好几天,还是没有解决。

代码部分:

1,java类
--------------------- 

public class TestMsg {  
      
    public void sendMsg(String userid,String message){    
     final String userId = userid;
     final String autoMessage = message;  
     //过滤器
        ScriptSessionFilter filter = new ScriptSessionFilter() {              
              public boolean match(ScriptSession scriptSession) {
                  String tag = (String)scriptSession.getAttribute("userId" );
                  System. out.println(tag);
                  System.out.println("userId.equals(tag)="+userId.equals(tag));
                  return userId.equals(tag);
             }
        };
        Runnable run = new Runnable(){
              private ScriptBuffer script = new ScriptBuffer();
              public void run() {
                   //设置要调用的 js及参数
               System.out.println("----------------run----------------");
                   script.appendCall( "showMessage", autoMessage);
                   //得到所有ScriptSession
                  Collection<ScriptSession> sessions = DWRScriptSessionListener.getScriptSessions();
                   //遍历每一个ScriptSession
                   for (ScriptSession scriptSession : sessions){
                    System.out.println("for (ScriptSession scriptSession : sessions)");
                        scriptSession.addScript( script);
                  }
             }
        };
         //执行推送
        System.out.println("--------推送开始--------");
        Browser.withAllSessionsFiltered(filter, run);    //注意这里调用了有filter功能的方法
        System.out.println("--------推送结束--------");
        }    
      
    public void saveid(String userId){  
     try{
       // HttpServletRequest request = ServletActionContext.getRequest();  
        //request.getSession().setAttribute("userId", userId);  
        ScriptSession scriptSession = WebContextFactory.get().getScriptSession();  
        scriptSession.setAttribute("userId", userId);  
     }catch(Exception e){
     e.printStackTrace();
     }
    }  
 


2,发送端
-----------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<!DOCTYPE HTML>  
<html>  
<head>    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
<script type="text/javascript" src="dwr/util.js"></script>      
<script type="text/javascript" src="dwr/engine.js"></script>    
  相关解决方案