Web-服务器推送push
——websocket、ajax轮询
2015年7月31日
1 服务器推送websocket:服务端主动向客户端发消息。
目标:客户端和服务器建立长连接,服务端与客户端可实时收发数据。
原理:使用HTTP协议建立全双工的TCP长连接。
方法:HTML5的WebSocket。
参考:http://www.oschina.net/translate/java-ee-html5-websocket-example
1.1 客户端:Websocket类,建立连接,发送数据,接收数据。
目标:建立与服务器的连接,与服务器交互,监听事件,控制连接。
方法:WebSocket类。
1.1.1控制连接:连接服务器、关闭连接
1.1.1.1 连接服务器:创建WebSocket对象时,将直接与服务器进行连接。
//check support
var url="ws://localhost:8080/testAMap/ws";
var ws;
if ('WebSocket' in window) {
ws = new WebSocket(url); //when create a instance, connectto server
} else if ('MozWebSocket' in window) {
ws = new MozWebSocket(url);
} else {
alert('WebSocket is not supported by this browser.');
return;
}
1.1.1.2 关闭连接:close()。
ws.close();//close by client
1.1.2监听连接事件:连接、接收数据、关闭、出错
1.1.2.1 连接成功事件:onopen()
ws.onopen=function(evt){
console.debug("onOpen()");
ws.send("Hello,this is Client.");//if connected,send message
};
1.1.2.2 接收数据事件:onmessage()
ws.onmessage=function(evt){//received message from server
console.debug("onMessage()");
console.debug(evt.data);
ws.close();//close by client
console.debug("close by client");
};
1.1.2.3 关闭事件:onclose()
ws.onclose=function(evt){
console.debug("onClose()");
};
1.1.2.4 出错事件:onError()
ws.οnerrοr=function(evt){
console.debug("onError()");
};
1.1.3交互:接收数据、发送数据
1.1.3.1 发送数据:send(msg);
ws.send("Hello,this isClient.");
1.1.3.2 接收数据:onmessage(event);
数据为event.date
1.1.4示例:连接服务器,并在接收到服务器信息后关闭连接。
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>