dwr 消息推送

来源:互联网 发布:mac梦幻西游装在那 编辑:程序博客网 时间:2024/05/01 04:07
    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<ScriptSession> pages = sctx.getScriptSessionsByPage("/DwrEg/client.html");  
              
            for (ScriptSession session : pages) {  
                session.addScript(script);  
            }  
        }  

    } 





Web.xml


<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="2.5"   
    xmlns="http://java.sun.com/xml/ns/javaee"   
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  <servlet>  
      <servlet-name>dwr-invoke</servlet-name>  
      <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>  
     <init-param>  
         <param-name>debug</param-name>  
         <param-value>true</param-value>   
     </init-param>  
     <init-param>  
         <param-name>activeReverseAjaxEnabled</param-name>  
         <param-value>true</param-value>  
     </init-param>    
     <!--   
     <init-param>  
         <param-name>classes</param-name>  
         <param-value>java.lang.Object</param-value>  
        </init-param> -->  
  </servlet>  
 
  <servlet-mapping>  
     <servlet-name>dwr-invoke</servlet-name>  
     <url-pattern>/dwr/*</url-pattern>  
  </servlet-mapping>  
  <welcome-file-list>  
    <welcome-file>client.html</welcome-file>  
  </welcome-file-list>  
</web-app>



dwr.xml


<?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd">  
    <dwr>  
        <allow>   
            <create javascript="myrevsrse" creator="new">  
                <param name="class" value="com.src.MyReverse"/>  
            </create>  
       </allow>  
</dwr> 


client.html


<html>  
<script type="text/javascript" src="dwr/engine.js"></script>  
<script type="text/javascript" src="dwr/util.js"></script>  
<head>  
<script type="text/javascript">  
 
    function callBack(data){      
           alert(data);     
        }    
    function receiveMessages(id) {  
            $('orderNotice').innerHTML = "收到id为" + id + "的新订单!";  
            $('orderNotice').show();  
        }  
     
</script>  
</head>  
<body onload="dwr.engine.setActiveReverseAjax(true);">  
<textarea rows="20" cols="20" id="news_id"></textarea>  
<br />   
<div id="orderNotice"></div>   
</body>  
</html>


dopush.html


<html>  
<script type="text/javascript" src="dwr/engine.js"></script>  
<script type="text/javascript" src="dwr/util.js"></script>  
<script type="text/javascript" src="dwr/interface/myrevsrse.js"></script>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
<title>Insert title here</title>  
<script type="text/javascript">  
    function sendnews(){   
        var new_content = dwr.util.getValue("newcontent");  
        myrevsrse.sendMes(new_content);  
    }  
      
    function sendinfo(){   
       myrevsrse.noticeNewOrder(12);  
    }    
</script>  
</head>  
<body>  
<input type="text" name="newcontent">  
<input type = "button" value="发消息" onclick="sendnews()"/>   
<br />  
<input type = "button" value="send 2" onclick="sendinfo()"/>  
<br />    
</body>
</html>


jar包:commons-logging.jar      dwr.jar    log4j-1.2.15.jar

0 0
原创粉丝点击