長輪詢是Web 應用程式中使用的一種輪詢技術,使伺服器能夠向客戶端發送數據,而無需等待明確請求。實現長輪詢涉及在客戶端和伺服器之間建立持久連線。
要為長輪詢請求提供服務,請將 Apache 設定為處理具有較長逾時的請求。這可以透過在 Apache 配置中設定 KeepAliveTimeout 和 MaxKeepAliveRequests 指令來實現。
實現長輪詢的簡單PHP 腳本可以編寫如下:
<?php while (true) { // Sleep for a random duration to simulate data availability sleep(rand(2, 10)); // Generate a random string to represent new data $data = "Message: " . rand(1, 10); // Send the data to the client echo $data; flush(); } ?>
在客戶端,您可以使用JavaScript 建立與PHP 腳本的持久連接並處理傳入的資料。這可以使用以下 jQuery 程式碼來實現:
$(function() { function waitForMsg() { $.ajax({ url: "msgsrv.php", async: true, timeout: 50000, success: function(data) { // Append the received data to a DOM element $("#messages").append("<div>" + data + "</div>"); // Recursively call the waitForMsg function to continue polling waitForMsg(); }, error: function(XMLHttpRequest, textStatus, errorThrown) { // Handle the error and try again after a delay waitForMsg(); } }); } waitForMsg(); });
此範例提供了長輪詢的基本實作以用於簡報目的。為了實現健全且可擴展的實現,請考慮使用 Node.js 或 Spring Boot 等框架。
以上是長輪詢在 Web 應用程式中如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!