使用DWR反转实现信息推送(一)

除了利用Pushlet实现信息推送外,DWR反转同样可以实现推送。

DWR的简单配置方法已经在以前的博客中写过。所以这里直接贴代码:

新建web工程,这里命名为DwrEg,包结构如下:

web.xml代码如下:


  
      dwr-invoke
      uk.ltd.getahead.dwr.DWRServlet
     
         debug
         true 
     
     
         activeReverseAjaxEnabled
		 true
       
     
  

  
     dwr-invoke
     /dwr/*
  
  
    client.html
  

 

dwr.xml代码如下:



     
		
			
		
   

 MyReverse.java代码如下:

package com.src;

import java.util.Collection;

import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.ServerContext;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;

public class MyReverse {
	public void sendMes(String mes){
		System.out.println("kao shi si bestllll...");
		send("系统消息:"+mes);
	}
	public void send(final String output) {
		org.directwebremoting.WebContext web = WebContextFactory.get();  
		String page = web.getServletContext().getContextPath()+"/client.html"; 
		
		Collection sessions = web.getScriptSessionsByPage(page);   
		System.out.println("size=="+sessions.size());
		 
		Util utilAll = new Util(sessions);  
	  
	    utilAll.addFunctionCall("callBack", output); //callBack是client.jsp里面的javascript函数,output是传递过去的参数
	    //utilAll.setValue("news_id", output, false);   
	    //这种方法也可以,直接将client.html里id为news_id的textarea的值设置为output的值     
	}

	public void noticeNewOrder(int id) {
        WebContext wctx = WebContextFactory.get();
        ScriptBuffer script = new ScriptBuffer();
        script.appendScript("receiveMessages(")
                .appendData(id)
                .appendScript(");");

        ServerContext sctx = ServerContextFactory.get(wctx.getServletContext());
        Collection pages = sctx.getScriptSessionsByPage("/DwrEg/client.html");
        
        for (ScriptSession session : pages) {
            session.addScript(script);
        }
    }
}

 client.html代码如下:










 推送界面dopush.html的代码如下:







Insert title here




 


 同样,这里的问题也是怎么实现点对点的信息推送,这儿只是实现了向所有的clent.html页面推送信息,以后接着总结。。。。

你可能感兴趣的:(DWR)