####什麼是輪詢javascript
輪詢是指客戶端定時向服務器發送ajax請求,服務器接到請求後立刻返回響應信息並關閉鏈接。php
####輪詢的簡單實現 僅僅是說出定義來,好像很模糊,代碼更加直觀一些,下面就簡單寫一下輪詢的實現方式: 前端代碼(以jquery ajax爲例,固然你也能夠經過純js的方式)html
<html>
<head>
<title>haorooms博客輪詢測試案例</title>
<script src="http://www.haorooms.com/theme/assets/js/jquery.js"></script>
</head>
<body>
<script type="text/javascript">
var getting = {
url:'server.php',
dataType:'json',
success:function(res) {
console.log(res);
}
};
//Ajax定時訪問服務端,不斷獲取數據 ,這裏是1秒請求一次。
window.setInterval(function(){$.ajax(getting)},1000);
</script>
</body>
</html>
複製代碼
你們能夠看到,前一次請求完成後,不管有無結果返回,一秒以後下一次請求又會發出。這就叫作Ajax輪詢。經過這個案例,你們也能夠看出,這樣存在性能問題,服務器也增長不少壓力。可是這就是輪詢的一種實現方式了。前端
####什麼是長輪詢java
客戶端向服務器發送Ajax請求,服務器接到請求後hold住鏈接,直到有新消息才返回響應信息並關閉鏈接,客戶端處理完響應信息後再向服務器發送新的請求。 經過上面描述,咱們能夠看出,長輪詢自己不是一種真正的推送技術,而只是傳統輪詢技術的一個變種。然而,其可以在真正推送技術沒法實現時模擬推送機制。jquery
####長輪詢的簡單實現 直接上代碼展現吧!前端代碼以下:ajax
<html>
<head>
<title>haorooms博客長輪詢測試案例</title>
<script src="http://www.haorooms.com/theme/assets/js/jquery.js"></script>
</head>
<body>
<script type="text/javascript">
//前端Ajax持續調用服務端,稱爲Ajax輪詢技術
var getting = {
url:'server.php',
dataType:'json',
success:function(res) {
console.log(res);
$.ajax(getting); //關鍵在這裏,回調函數內再次請求Ajax
}
//當請求時間過長(默認爲60秒),就再次調用ajax長輪詢
error:function(res){
$.ajax($getting);
}
};
$.ajax(getting);
</script>
</body>
</html>
複製代碼