dwr3.0反ajax消息推送

web.xml

    
        dwr-invoker
        
            org.directwebremoting.spring.DwrSpringServlet
        
        
            debug
            false
        
        
            activeReverseAjaxEnabled
            true
        
         
         
            config 
            WEB-INF/config/dwr/dwr.xml 
        
        4
    
    
        dwr-invoker
        /dwr/*
    

 /**
	 *消息推送。 向页面推送消息
	 * @param msg
	 */
	public void send(Map map) {
		final Map autoMsg =  map;
		String page = ServerContextFactory.get().getContextPath() +"/main.jsp";
		Browser.withPage(page,
		//对httpSession和scriptSession进行判断,将消息推送给不同用户
//		Browser.withPageFiltered(page,new ScriptSessionFilter() {
//			@Override
//			public boolean match(ScriptSession session) {
//				HttpSession ss = WebContextFactory.get().getSession();  
//				//无session,不推送消息
//				if (ss == null)
//					return false;
//				else {
//					return true;
//				}
//			}
//		},
		new Runnable() {
			ScriptBuffer sBuffer = new ScriptBuffer();
			public void run() {
				sBuffer.appendCall("show", autoMsg);
				Collection sessions = Browser.getTargetSessions();
				for (ScriptSession scriptSession : sessions) {
					scriptSession.addScript(sBuffer);
				}
			}
		});
	}
 /**
	 *scriptSession创建和注销
	 */
 private static final long serialVersionUID = -201306202407420071L;
  public void init()	throws ServletException {
         Container container = ServerContextFactory.get().getContainer();
         ScriptSessionManager manager = container.getBean(ScriptSessionManager.class);
         ScriptSessionListener listener = new ScriptSessionListener() {
              public void sessionCreated(ScriptSessionEvent ev) {
              	HttpSession session = WebContextFactory.get().getSession();
              	String userId = (String)session.getAttribute("loginUserId");
              	System.out.println("a ScriptSession is created!");
              	ev.getSession().setAttribute("userId", userId );
                	}
              public void sessionDestroyed(ScriptSessionEvent ev) {
              	System.out.println("a ScriptSession is distroyed");
              	}
         };
         manager.addScriptSessionListener(listener);
  }
 
  
 
  
//main.jsp

 
  
 
 

你可能感兴趣的:(Java)