`

Dwr-推送

    博客分类:
  • DWR
 
阅读更多
js代码:(还需要导入dwr的相应js)

<script>

window.onload=function(){

    //想实现推送  这一句是必需的!!!!!!!!!!!!!!!!!!
dwr.engine.setActiveReverseAjax(true);

       $("all").onclick=function(){
   
          var msg=  $("userName").value+"说:  "+$("inputText").value;
          ChatService.SendMsg(msg);
       }
};


   //展示消息   后台会调用该方法
     var toDisplay=function(msg){
      $("show").innerHTML= $("show").innerHTML+"<br/>"+msg;
      }

</script>


服务器端代码:

public class ChatService {

//页面调用该方法
public void SendMsg(String msg){
this.Send(msg);
}


//改方法处理后调用页面的方法,从而改变页面
   public void Send(String msg){
   
    WebContext ctx = WebContextFactory.get();
    String page = ctx.getCurrentPage();
    Collection<ScriptSession> sessions = ctx.getScriptSessionsByPage(page);
       //确定需要推送给谁
    Util util = new Util(sessions);
// 调用js中的toDisplay函数,将msg显示在页面上
    util.addFunctionCall("toDisplay", msg);
}
}


dwr.xml:
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "/WEB-INF/dwr10.dtd">
<dwr>
<allow>
<create javascript="ChatService" creator="new">
<param name="class" value="service.ChatService">
</param>
</create>

<create javascript="MoreFunctionChatService" creator="new">
<param name="class" value="service.MoreFunctionChatService">
</param>
</create>

</allow>
</dwr>


web.xml需要加:
<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  <init-param>
     <param-name>debug</param-name>
     <param-value>true</param-value>
  </init-param>
 
  <init-param>
      <param-name>pollAndCometEnabled</param-name>
      <param-value>true</param-value>
    </init-param>
 
</servlet>
   
    <servlet-mapping>
      <servlet-name>dwr-invoker</servlet-name>
      <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>


分享到:
评论
1 楼 sanrenxing_1 2017-09-26  
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的推送,我们项目用的就是GoEasy推送,他们提供的OTP (one-time-password)能有效杜绝他人通过在页面上获取 appkey的方式,进行非法操作,十分安全!此外GoEasy目前除了在中国有服务器外还在美国,新加坡也开了服务器来支持外海推送的需求,据他们客服说接下来还会有更多的机房在世界各地……如果有全球推送需求的项目可以考虑它。

相关推荐

Global site tag (gtag.js) - Google Analytics