浏览 9542 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-14
本例采用Eclipse+JDK1.5+DWR2.0M2+Tomcat5.028开发 管理员端,负责接受消息。 demo1.html <html> <HEAD> <TITLE>管理订单</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type='text/javascript' src='/dwr/engine.js'></script> <script type='text/javascript' src='/dwr/util.js'></script> <script language="javascript"> function init() { dwr.engine.setActiveReverseAjax(true); } function receiveMessages(id) { document.all.div_area.innerHTML="产生新订单:"+id; } </script> </HEAD> <body onload="init();"> <div id="div_area"> 目前没有订单 </div> </body> </html> 模拟下定单 demo.html <html> <HEAD> <TITLE>下订单</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type='text/javascript' src='/dwr/interface/Remote.js'></script> <script type='text/javascript' src='/dwr/engine.js'></script> <script type='text/javascript' src='/dwr/util.js'></script> <script language="javascript"> function doRemote() { Remote.getData();//模拟下订单 } </script> </HEAD> <body> <input type="text" name="name" /> <input type="text" name="order" /> <input type="button" value="提交" onClick="doRemote();"> </body> </html> Remote.java //订单处理 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.directwebremoting.ScriptBuffer; import org.directwebremoting.ScriptSession; import org.directwebremoting.WebContext; import org.directwebremoting.WebContextFactory; public class Remote { public void getData(HttpServletRequest request) { this.noticeNewOrder("JISOD001003");//发送订单号 } public void noticeNewOrder(String id) { WebContext wctx = WebContextFactory.get(); String currentPage = "/demo1.html"; ScriptBuffer script = new ScriptBuffer(); script.appendScript("receiveMessages(").appendData(id).appendScript(");"); Collection pages = wctx.getScriptSessionsByPage(currentPage); for (Iterator it = pages.iterator(); it.hasNext();) { ScriptSession otherSession = (ScriptSession) it.next(); otherSession.addScript(script); } } } dwr配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.ltd.uk/dwr/dwr20.dtd"> <dwr> <allow> <create creator="new" javascript="Remote"> <param name="class" value="com.Remote" /> <include method="noticeNewOrder" /> <include method="getData" /> </create> </allow> </dwr> 经调试可以成功,但是响应比较慢,从点击下订单,到管理页面显示下单消息,会经过差不多一分钟的时间,不知道是为什么,使用Tomcat6的NIO也是如此。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-01-14
dwr的ActiveReverseAjax也是轮询的方式实现的(默认情况下)
有一个参数可以调整reflash的时间。真正的push貌似里面也有一些代码,不过没用过 ps:以上结论是基于半年前的记忆,lz需要自己查证正确性! |
|
返回顶楼 | |
发表时间:2008-01-14
半年前啊?那时候是轮询的,现在是基于长连接的,没有产生reflash,好像我发错地方了,有没有管理员帮我转到ajax的dwr中?
|
|
返回顶楼 | |
发表时间:2008-01-14
汗!去看了看,果然是new features
落伍了... |
|
返回顶楼 | |
发表时间:2008-03-04
上面是针对某个页面的消息推送,如何实现这对个人的消息推送呢?
|
|
返回顶楼 | |
发表时间:2008-07-11
dwr的推和pushlet的推有何不同?
|
|
返回顶楼 | |
发表时间:2008-10-11
遇到同样的问题了,而且我发现在本机localhost访问时就会很慢,通过网络用其它ip去访问它速度就不慢了~不知道为什么~
|
|
返回顶楼 | |
发表时间:2008-12-30
同上....用起来不爽....还请指点
|
|
返回顶楼 | |