ajax輪詢原理及其實現方式
ajax輪詢的兩種方式
方式1:設定一個定時器,無論有無結果返回,時間一到就會繼續發起請求,這種輪詢耗費資源,也不一定能得到想要的數據,這樣的輪詢是不推薦的。
方式2:
輪詢就是在第一次請求的時候,如果返回數據了那么就在成功的回調里面再次發起這個請求,就像遞歸一樣,調用本方法。
如果時間太久,失敗了,同樣的再次調用這個請求,也就是本函數。當然,長輪詢也需要后台配合,沒有數據改變的時候就不用返回,或者約定好邏輯。
輪詢的應用場景
即時通訊
排行榜
http 短輪詢
1)介紹:http 短輪詢是 server 收到請求 不管是否有數據到達都直接響應http 請求;如果瀏覽器收到的數據為空,則隔一段時間,瀏覽器又會發送相同的http請求到server 以獲取數據響應;
2) http 短輪詢的缺點:消息交互的實時性較低(server端到瀏覽器端的數據反饋效率低);
http 長輪詢 和 短輪詢的異同
1)相同點:當server 的數據不可達時,基於http長輪詢和短輪詢 的http請求,都會 停留一段時間;
2)不同點:http長輪詢是在服務器端的停留,而http 短輪詢是在 瀏覽器端的停留;
3)性能總結:從這里可以看出,不管是長輪詢還是短輪詢,都不太適用於客戶端數量太多的情況,因為每個服務器所能承載的TCP連接數是有上限的,這種輪詢很容易把連接數頂滿;
實現代碼
setInterval("test()",500);
function test() {
$.ajax({
url: '/new_window_url/',
async:true,
type: 'get',
success: function (data) {
var new_url = $('#new_iframe').attr('src');
if (new_url !== data){
$('#new_iframe').attr('src', data);
}
}
})
}