1.Comet:基于HTTP长链接的服务器推送技术
服务器端会主动以异步的方式向客户端程序推送数据,而不需要客户端显式的发出请求。
当然我们在客户端也可以模拟实现Comet方式:
function conn(){
$.ajax({
url:'./data/index.php',
type:'json',
success: function(res) {
console.log(res);
conn(); // 通过回调函数的方式一直发送请求
}
})
}
conn();
2.基于WebSocket的推送方案
comet可以一定程度上模拟双向通信,但效率较低.HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯.
varws= new WebSocket('ws:localhost:8081/websocket/');
ws.onopen = function(){
ws.send("发送数据");
console.log("已连接")
};
ws.onmessage = function(evt){
console.log("数据已接受:"+evt.data);
};
ws.onclose= function(){
console.log("连接已关闭...");
};
3.SSE:服务器推送数据的新方式
SSE既能像WebSocket协议一样,每当数据发生变化,服务器就向浏览器发送一个"通知",这要比浏览器按时向服务器查询更有效率,而且还支持http协议,不会像WebSocket那样必须在ws协议下通信.
var source = newEventSource('/data/sse.php');
source.onopen = function() {
console.log('已连接',this.readyState);
};
source.onmessage = function(event) {
console.log("正在接受服务端的数据"+event.data);
};
source.onerror = function() {
}
网友评论