jQuery Comet是jQuery的一款插件,用于實現實時數據通信。
Comet實現的方式主要有兩種:長輪詢(Long Polling)和流(Streaming)。
長輪詢是指客戶端向服務器發送請求,如果服務器有數據更新,則立即返回數據;如果沒有數據更新,則在一定時間內返回空才能結束請求(否則前端會一直等待)。這種方式適用于實時性要求不高的場景。
$.ajax({ type: 'GET', url: '/myapi', dataType: 'json', data: {param1: 'foo'} success: function(data){ //處理返回的數據 //發送下一次請求 ajaxRequest(); }, error: function(){ //處理錯誤 //發送下一次請求 ajaxRequest(); } }); function ajaxRequest() { //發送下一次請求 $.ajax({...}); }
流是指在客戶端和服務器之間建立持久的連接,服務器可以隨時將數據通過此連接推送到客戶端。這種方式適用于實時性要求高的場景。
var socket = new WebSocket('ws://localhost:8080/myapi'); socket.onopen = function(){ //連接已建立 }; socket.onmessage = function(event){ var data = JSON.parse(event.data); //處理返回的數據 }; socket.onclose = function(){ //連接已關閉 }; socket.onerror = function(){ //連接出錯 };
使用jQuery Comet可以方便地實現WebSocket、Server-Sent Event、Long Polling等方式,使Web應用程序具有實時數據通信的能力。
上一篇前端css樣式圖解