@H_404_2@
@H_404_2@
在开始本节内容之前,先来了解一下什么是服务器推送技术和DWR的推送方式。
@H_404_2@
(3)polling方式由浏览器定时向服务端发送ajax请求,询问后台是否有什么内容需要推送,有的话就会由服务端返回推送内容。这种方式和我们直接在页面通过定时器发送ajax请求,然后查询后台是否有变化内容的实现是类似的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@H_64_404@
22
23
24
25
26
27
28
29
|
package
sugar.dwr;
import
java.util.Collection;
org.directwebremoting.Browser;
org.directwebremoting.ScriptBuffer;
org.directwebremoting.ScriptSession;
public
class
MessagePush {
public
void
send( final
String content){
Runnable run = new
Runnable(){
private
ScriptBuffer script = new
ScriptBuffer();
void
run() {
//设置要调用的 js及参数
script.appendCall( "show"
,content);
//得到所有ScriptSession
Collection<ScriptSession> sessions = Browser.getTargetSessions();
//遍历每一个ScriptSession
for
(ScriptSession scriptSession : sessions){
scriptSession.addScript( script);
}
}
};
//执行推送
Browser. withAllSessions(run);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@H_64_404@
22
23
24
25
26
|
<%@ page language= "java" import ="java.util.*" pageEncoding="UTF-8" %>
<! DOCTYPE
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
< head
>
< title
>dwr接收</ title
>
< script
src = "js/jquery-1.8.3.js"
></ script >
type = "text/javascript"
src = "dwr/util.js" ></ script
>
src = "dwr/engine.js" ></ script
>
src = "dwr/interface/messagePush.js"
></ script >
</ head
>
< body
>
dwr接收< br
/>
< div
id = "content"
style = " width: 200px ;height: 30px;border : 1px solid ; text-align: center ; padding: 5px;" ></ div >
type = "text/javascript"
>
dwr.engine.setActiveReverseAjax( true);
dwr.engine.setNotifyServerOnPageUnload( true);
function show(content){
$( "#content" ).text(content);
}
</ script >
</ body
>
</ html >
|