快速掌握DWR开发图解-4 Reverse Ajax,服务器推技术实现简单聊天

hoar 贡献于2012-04-02

作者 dpl  创建于2011-12-14 13:24:00   修改者dpl  修改于2011-12-14 13:28:00字数3120

文档摘要:通过客户端发出请求获取服务器端数据的方式通常称为“拉”技术,很形象说明客户端在拉取服务器端数据,而有时候需要服务器端主动向客户端“推”数据,比如监测聊天上线人数主动向上线发送消息,后台数据库发生变化是主动更新所有客户端展示。
关键词:

快速掌握DWR开发图解-4 Reverse Ajax,服务器推技术实现简单聊天 1、服务器推技术 通过客户端发出请求获取服务器端数据的方式通常称为“拉”技术,很形象说明客户端在拉取服务器端数据,而有时候需要服务器端主动向客户端“推”数据,比如监测聊天上线人数主动向上线发送消息,后台数据库发生变化是主动更新所有客户端展示。 2、Reverse Ajax实现服务器推技术 DWR2.x的推技术也叫DWR Reverse Ajax(逆向Ajax)主要是在BS架构中,从服务器端向多个浏览器主动推数据的一种技术。DWR的逆向Ajax主要包括两种模式:主动模式和被动模式。其中主动模式包括polling和comet两种,被动模式只有piggyback这一种。 (1)piggyback方式,是默认的方式。 如果后台有什么内容需要推送到前台,是要等到那个页面进行下一次ajax请求的时候,将需要推送的内容附加在该次请求之后,传回到页面。只有等到下次请求页面主动发起了,中间的变化内容才传递回页面。 (2)comet方式 当服务端建立和浏览器的连接,将页面内容发送到浏览器之后,对应的连接并不关闭,只是暂时挂 起。如果后面有什么新的内容需要推送到客户端的时候直接通过前面挂起的连接再次传送数据。服务器所能提供的连接数目是一定的,在大量的挂起的连接没有关闭 的情况下,可能造成新的连接请求不能接入,从而影响到服务质量。 (3)polling方式 由浏览器定时向服务端发送ajax请求,询问后台是否有什么内容需要推送,有的话就会由服务端返回推送内容。这种方式和我们直接在页面通过定时器发送ajax请求,然后查询后台是否有变化内容的实现是类似的。只不过用了dwr之后这部分工作由框架帮我们完成了。 3、配置web.xml使用reverse ajax (1)piggyback方式,默认的dwr在web.xml文件的配置即piggyback方式。 (2)comet需要增加如下配置 pollAndCometEnabled true activeReverseAjaxEnabled true (3)polling方式:在comet方式的基础之上,再配置以下参数 org.directwebremoting.extend.ServerLoadMonitororg.directwebremoting.impl.PollingServerLoadMonitor   disconnectedTime 60000 4、编写聊天消息处理类 public class MessageManager { private static List msgList = new LinkedList(); public List getMsgList() { return msgList; } public synchronized void sendMessage(String msg) { msgList.add(msg); showMessage(); } private void showMessage() { WebContext wctx = WebContextFactory.get(); String currentPage = wctx.getCurrentPage(); ScriptBuffer script = new ScriptBuffer(); script.appendScript("receiveMessages(").appendData(msgList).appendScript(");");// 调用页面的javascript方法把值添到页面上。 Collection pages = wctx.getScriptSessionsByPage(currentPage);// 循环出所有的会话页面并执行 for (Iterator it = pages.iterator(); it.hasNext();) { ScriptSession otherSession = (ScriptSession) it.next(); otherSession.addScript(script); } } } 5、dwr.xml中配置聊天消息处理类 6、页面代码 ReverseAjax.html
7、效果 在一个浏览器中发送消息,另外一个里面自动获取刚才的消息并显示。  

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档