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 οnlοad="dwr.engine.setActiveReverseAjax(true);">  
21. <input type="button" value="点击我" οnclick="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推送的方法。可是不能成功!
求高手指点迷津啊@!!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值