您的位置:首页 > 其它

学习使用dwr 中的push技术 服务器发送一个广播,让每一个客户端都能接收到这个广播。

2009-11-25 20:53 525 查看
dwr里面的push技术可以做这样的事情:服务器发送一个广播,让每一个客户端都能接收到这个广播。一般的做法,就是让客户端每隔一定时间刷新一下,获取服务器发送的请求,这种方法可以,不过性能一定是最低的。dwr的push技术是让服务器每次发送广播时,把这个广播推送给客户端,不用客户端去刷新,据说是dwr的推送是基于长连接的,性能不错,具体的原理,我暂时也没搞清楚,先不管这些了,先实现了再说。

这里我假设你已经会用dwr的基本使用了。

修改web.xml,启用dwr的Reverse Ajax,也就是我们要用的push技术:

public class TestServlet extends HttpServlet {
    public TestServlet() {
        super();
    }
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        ServerContext wctx = ServerContextFactory.get(getServletContext());
        Collection<ScriptSession> sessions = wctx.getAllScriptSessions();
        // Collection<ScriptSession> sessions =
        // wctx.getScriptSessionsByPage("/poject/test.html");
        
        String msg = request.getParameter("msg");
        if(msg==null)
        {
            msg = "empty";
        }
        ScriptBuffer script = new ScriptBuffer();
        script.appendScript("showMessage(").appendData(msg)
                .appendScript(");");
        for (ScriptSession session : sessions) {
            session.addScript(script);
        }
    }
}


添加一个html页面,用来接收服务端广播:

<mce:script type='text/javascript' src="dwr/engine.js" mce_src="dwr/engine.js"></mce:script>
<mce:script type="text/javascript"><!--
dwr.engine.setActiveReverseAjax(true);
function showMessage(msg)
{
alert(msg);
}
// --></mce:script>

打开添加的html页面,然后打开Servlet发送一个广播,哈哈,html页面就会自动弹出一个javascript对话框,到此,dwr的推送就完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐