六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 23|回复: 0

serverpush实现

[复制链接]

升级  18%

19

主题

19

主题

19

主题

秀才

Rank: 2

积分
77
 楼主| 发表于 2013-1-22 22:10:27 | 显示全部楼层 |阅读模式
前段时间做一个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 onload=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> 现在打开多个浏览器测试吧!!!
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表