serverpush实现

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值