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>