JavaScript数据推送

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() {

}

你可能感兴趣的:(JavaScript数据推送)