長輪詢是一種輪詢技術,可以長時間保持連接打開,以便在伺服器更新可用時實現即時響應。它的實作非常簡單。
要使用 Apache 處理請求,請建立 PHP 腳本,例如 msgsrv.php。這是一個簡單的範例:
// Simulate data availability after a random delay sleep(rand(2, 10)); echo("Hi! Here's a random number: " . rand(1, 10));
在 Apache 上執行此腳本。請注意,使用像 Apache 這樣的大容量網頁伺服器可能會導致工作執行緒耗盡。
在JavaScript 中,您可以使用像long_poller.htm 這樣的腳本來啟動輪詢請求:
<script> function waitForMsg() { $.ajax({ type: "GET", url: "msgsrv.php", async: true, cache: false, timeout: 50000, success: function(data) { // Append the response to a div addmsg("new", data); // Continue polling after 1 second setTimeout(waitForMsg, 1000); }, error: function(..., errorThrown) { // Append error to div addmsg("error", textStatus + " (" + errorThrown + ")"); // Retry after 15 seconds setTimeout(waitForMsg, 15000); } }); } $(document).ready(function() { waitForMsg(); // Start the initial request }); </script>
該腳本不斷向msgsrv. php 發出請求,並在div 中顯示回應。它使用簡單的速率限制器來防止過多的請求。
長輪詢提供彈性和簡單性。如果網路中斷,客戶端會自動重試。對於需要從伺服器立即更新的應用程式來說,它是一個合適的選擇,例如即時訊息或聊天應用程式。
以上是如何使用 Apache 和 JavaScript 實現基本的長輪詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!