首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

DWR推送有关问题

2013-09-18 
DWR推送问题我不大理解推送是个什么意思!!百度+谷歌了很多文章好的都是差不多的。虽然看明白了一部分但是这

DWR推送问题
我不大理解推送是个什么意思!!百度+谷歌了很多文章好的都是差不多的。虽然看明白了一部分但是这个推送究竟是什么意思?我的理解是:比如国庆到了,我们网站有个什么优惠的活动想要告诉用户。这个时候就可以选择推送来实现。即,在线的所有用户都能收到一个“从网站右下角弹出的一个小窗体”。内容比如:喜迎国庆,XXXX优惠啦,赶紧来购买吧!
有点和QQ那种:某某评论了你的文章。那种效果差不多。(只不过QQ是针对某一个人,而我是推给全部用户)
我就是这么理解推送的。不知道对不对。
如果这样理解是对的 那么现在就有几个问题了:
所有在我的网站的用户都能收到我的消息,看上去不是用户主动“点击某个连接”而得到的。而是服务器自动推过来的。那么这里有个小小问题,服务器是怎么推过来的?意思就是说 肯定还是有个请求触发了某个方法,才能吧消息推出去吧。但是客服端用户没有请求啊,那就是服务器请求的了!
好了如果描述还不狗清楚,找了一个简单推送的例子 如下:
原理什么的就是采用DWR的框架来做的推送:看看代码例子:
dwr和xml的必须的配置就不贴了 。
下面是推送的实现。


   1.public class SendPushService {  
2.//发送消息   
3.public void send(String msg) {  
4.System.out.println("==========调用了send方法==========");  
5.ScriptBuffer scriptBuffer = new ScriptBuffer(); //构造js脚本   
6.WebContext webContext=WebContextFactory.get();  
7.ScriptSession myScSession = webContext.getScriptSession();  
8.scriptBuffer.appendScript("dwrtest(");  
9.scriptBuffer.appendData(msg);  
10.scriptBuffer.appendScript(")");  
11.Util util = new Util(myScSession);  
12.util.addScript(scriptBuffer); //向客户端推送消息   
13.}  
14.}  


关键是这个页面:

   1.<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
2.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
3.<html xmlns=" http://www.w3.org/1999/xhtml">  
4.<head>  
5.<base href="${basePath }" />  
6.<script type='text/javascript' src='${basePath}dwr/engine.js'></script>  
7.<script type='text/javascript' src='${basePath}dwr/util.js'></script>  
8.<script type='text/javascript' src='${basePath}dwr/interface/SendPushService.js'></script>  
9.<script type="text/javascript">  
10.function hello(){  
11.SendPushService.send("第一个dwr推程序");  
12.}  
13./**由dwr在后台调用这个方法**/  
14.function dwrtest(data){  
15.alert(data);  
16.}  
17.</script>  
18.<title>第一个dwr推程序</title>  
19.</head>  
20.<body onload="dwr.engine.setActiveReverseAjax(true);">  
21.<input type="button" value="点击我" onclick="hello();" />  


22.</body>  
23.</html>  


页面里面使用了DWR。引入三个使用DWR必要的js
<script type='text/javascript' src='${basePath}dwr/engine.js'></script>  
<script type='text/javascript' src='${basePath}dwr/util.js'></script>  
<script type='text/javascript' src='${basePath}dwr/interface/SendPushService.js'></script>
然后是2个js函数。页面点击按钮执行
function hello(){  
SendPushService.send("第一个dwr推程序");  
}  
这样就执行了后台那个推送消息的方法。最后消息被推送回了这个页面
function dwrtest(data){  
alert(data);  
}  
这里的这个函数就得到了推送的消息

这样一个流程下来,不是也还是客服端在请求,然后服务端才返回的。这样怎么能实现我上面描述的那种
由服务端直接推出来的效果。

我原本以为是在其他java类或者servlet中调用SendPushService.send推送的方法。可是不能成功!
求高手指点迷津啊@!!!! dwr 服务器 servlet 推送技术
[解决办法]
dwr推送应该在js中设置dwr.engine.setActiveReverseAjax(true);
看一下dwr自带的chat例子,写的很清楚。
[解决办法]
不太懂。

学习一下。

热点排行