当前位置:   article > 正文

serverpush实现

servlet全局push

前段时间做一个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后台类

  1. public class TestClass
  2. {
  3. int i = 0;
  4. public String testMethod1(String name)
  5. {
  6. return "Hello," + name;
  7. }
  8. public void send(final String msg)
  9. {
  10. Browser.withCurrentPage(new Runnable() {
  11. public void run()
  12. {
  13. ScriptSessions.addFunctionCall("receive", msg);
  14. }
  15. });
  16. }
  17. }

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.前段代码的编写

  1. <script src='dwr/interface/testClass.js'></script>
  2. <script src='dwr/engine.js'></script>
  3. <script src='dwr/util.js'></script>
  4. <body οnlοad=dwr.engine.setActiveReverseAjax(true);>
  5. <input type="text" id='shuo' />
  6. <input type="button" value='send' id="btn" />
  7. <div id="kkk2"></div>
  8. <script type="text/javascript">
  9. document.getElementById('btn').onclick = function(){
  10. var msg = document.getElementById('shuo').value;
  11. testClass.send(msg);
  12. document.getElementById('shuo').value='';
  13. }
  14. function receive(msg){
  15. var d = document.createElement('div');
  16. d.innerHTML = msg;
  17. document.getElementById('kkk2').appendChild(d);
  18. }
  19. </script>
  20. </body>

 现在打开多个浏览器测试吧!!!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号