jQuery Long Polling是一種AJAX編程模式,其中客戶端不斷向服務(wù)器提交請求,服務(wù)器在有新內(nèi)容時返回響應(yīng),以實現(xiàn)近實時的更新。
通常,AJAX請求會立即獲取響應(yīng)并關(guān)閉連接,但使用Long Polling,請求可以保持打開狀態(tài),直到服務(wù)器有新內(nèi)容可用或超時為止。
以下是使用jQuery Long Polling實現(xiàn)的簡單示例代碼:
function poll() { $.ajax({ url: 'server.php', timeout: 60000, success: function(data) { // 處理響應(yīng)數(shù)據(jù) poll(); // 重新啟動請求 }, error: function() { poll(); // 重新啟動請求 } }); } $(document).ready(function() { poll(); // 啟動首次請求 });
在此示例中,poll()函數(shù)通過使用jQuery.ajax()方法創(chuàng)建HTTP請求。timeout選項指定請求超時時間(以毫秒為單位),成功回調(diào)處理函數(shù)在收到響應(yīng)時執(zhí)行,而錯誤處理回調(diào)在請求失敗時執(zhí)行。
由于poll()函數(shù)遞歸地調(diào)用自己,因此這個請求會一直保持打開狀態(tài),直到服務(wù)器有新內(nèi)容可用或超時為止,然后重新發(fā)起請求。
雖然Long Polling是一種有效的實時Web技術(shù),但它并不是沒有缺點的。它與HTTP服務(wù)器和負載平衡器的行為可能不兼容,而且可能需要調(diào)整請求超時和服務(wù)器處理時間,以避免響應(yīng)延遲或死鎖。
在決定使用Long Polling之前,開發(fā)人員應(yīng)該了解其優(yōu)缺點并考慮使用其他實時Web技術(shù),如WebSocket或Server-Sent Events。