我接觸到了這些examples顯示投票與JavaScript中的長輪詢,但我不明白他們是如何彼此不同。特別是對於長輪詢的例子,它是如何保持連接開放的?民意調查與長時間輪詢
這是傳統的輪詢的情況是這樣的:
(function poll(){
setTimeout(function(){
$.ajax({ url: "server", success: function(data){
//Update your dashboard gauge
salesGauge.setValue(data.value);
//Setup the next poll recursively
poll();
}, dataType: "json"});
}, 30000);
})();
,這是長輪詢例如:
(function poll(){
$.ajax({ url: "server", success: function(data){
//Update your dashboard gauge
salesGauge.setValue(data.value);
}, dataType: "json", complete: poll, timeout: 30000 });
})();
謝謝!
客戶端能分辨長輪詢和慢響應的區別嗎?在我看來,投票和長時間投票基本上是一回事。輪詢:「客戶端:它是否準備好了?服務器:否」。長輪詢:「客戶端:它準備好了嗎?服務器:...否」。 – DavidS
@Davids:以下是區別:通過輪詢,客戶端會詢問並立即回答「是/或」。通過長時間的投票,客戶詢問但*不會立即得到答案。服務器不會對問題做出迴應,直到有*可以回答的東西。所以這個問題一直在等待着。 – Robert
@Robert如果發生超時事件並且服務器無法在長輪詢中發送數據,會發生什麼情況?客戶是否應該再次發送相同的請求? –