微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DWR3实现服务器端向客户端精确推送消息

研究了一天半,终于模拟出了这个功能,网上DWR的资料不少,但是真正实现客户端向服务器端精确推送消息的只有两篇文章。但是代码都只有一部分,向我这种刚开始学习DWR的人来说要看懂真的蛮难。不过即便如此,http://www.blogjava.net/stevenjohn/archive/2012/07/07/382447.html这片文章还是给了我很大帮助,再次表示感谢,下面我将这两天的研究详细记录下来备忘,也希望能帮助到像我一样的人。只写过程,不写原理(不是不写,而是有些地方我也不太懂),下面开始:

第一、在项目中引入dwr.jar,然后在web.xml中进行配置,配置如下:

Java代码
  1. <servlet>
  2. <servlet-name>dwr-invoker</servlet-name>
  3. <servlet-class>
  4. org.directwebremoting.servlet.DwrServlet
  5. </servlet-class>
  6. <init-param>
  7. <param-name>crossDomainSessionSecurity</param-name>
  8. <param-value>false</param-value>
  9. </init-param>
  10. <param-name>allowScriptTagRemoting</param-name>
  11. <param-value>true</param-value>
  12. <param-name>classes</param-name>
  13. <param-value>java.lang.Object</param-value>
  14. <param-name>activeReverseAjaxEnabled</param-name>
  15. <param-name>initApplicationScopeCreatorsAtStartup</param-name>
  16. <param-name>maxWaitAfterWrite</param-name>
  17. <param-value>3000</param-value>
  18. <param-name>debug</param-name>
  19. <param-name>logLevel</param-name>
  20. <param-value>WARN</param-value>
  21. </servlet>

第二:在web.xml的同级目录下新建dwr.xml文件内容如下

这个是dwr的基本配置,MessagePush在页面的javascript中使用,这个是对被推送页面开放的java类,Test是对推送页面开放的java类。场景:管理员后台登陆,发布一条消息,通过Test推送到后台,后台通过MessagePush推送给指定的用户,当然,至于怎么找到指定的用户,下面会说。

第三,被推送的页面代码

以上代码的简单解释:

页面页面onload的3个函数都是必须的,后两个是dwr的,第一个是将登录用户的userid与对应 的scriptSession进行处理,以便精确推送的时候能找到推送对象

第四 MessagePush类中实现的方法如下:

里面对应的DwrScriptSessionManagerUtil 对应如下:

第五 推送页面代码:

第六:精确推送要实现的代码:

至此 这个例子的代码都已经贴出来了,应该是可以跑通的,有问题的话可以给我留言。当然,要自己写个登录,然后把userId放到session里面,这个比较简单,就不贴代码了,有问题可以在http://download.csdn.net/detail/luojia_wang/5275588上下载原项目。我只是简单的做了一个能实现功能的例子,还有很多地方要研究,比如跟spring整合,还可能有很多优化,等我继续学习一下再说.

原文地址:https://www.jb51.cc/ajax/162054.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐