赞
踩
前段时间做一个Demo,需要在里面实现实时的系统内存、CPU、线程等信息。考虑Ajax的Polling来实现,但发现CPU很高,频繁的Ajax访问,服务器受不了呀。
目前,初步实现push的服务器还不成熟。servlet3.0,Tomcat等有实现,但很麻烦。
幸好08年有DWR的使用经历,DWR3.0的反向功能,让我看到了希望。下面来说说他实现的一个及时聊天吧。
1.导入dwr.jar
2.servlet配置
<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>activeReverseAjaxEnabled</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
3.新建一个java后台类
- public class TestClass
- {
- int i = 0;
-
- public String testMethod1(String name)
- {
- return "Hello," + name;
- }
-
- public void send(final String msg)
- {
-
- Browser.withCurrentPage(new Runnable() {
-
- public void run()
- {
- ScriptSessions.addFunctionCall("receive", msg);
-
- }
-
- });
-
- }
-
- }

4.编写dwr.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd"> <dwr> <allow> <create creator="new" javascript="testClass" scope="application"> <param name="class" value="dwr.TestClass" /> <include method="testMethod1" /> <include method="send" /> </create> </allow> </dwr>
5.前段代码的编写
- <script src='dwr/interface/testClass.js'></script>
- <script src='dwr/engine.js'></script>
- <script src='dwr/util.js'></script>
- <body οnlοad=dwr.engine.setActiveReverseAjax(true);>
- <input type="text" id='shuo' />
- <input type="button" value='send' id="btn" />
- <div id="kkk2"></div>
- <script type="text/javascript">
- document.getElementById('btn').onclick = function(){
- var msg = document.getElementById('shuo').value;
- testClass.send(msg);
- document.getElementById('shuo').value='';
- }
-
- function receive(msg){
- var d = document.createElement('div');
- d.innerHTML = msg;
- document.getElementById('kkk2').appendChild(d);
- }
- </script>
- </body>

现在打开多个浏览器测试吧!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。