首頁 >後端開發 >php教程 >長輪詢在 Web 應用程式中如何運作?

長輪詢在 Web 應用程式中如何運作?

Susan Sarandon
Susan Sarandon原創
2024-12-28 15:09:17256瀏覽

How Does Long Polling Work in Web Applications?

理解和實現長輪詢

長輪詢是Web 應用程式中使用的一種輪詢技術,使伺服器能夠向客戶端發送數據,而無需等待明確請求。實現長輪詢涉及在客戶端和伺服器之間建立持久連線。

用於長輪詢的 Apache 設定

要為長輪詢請求提供服務,請將 Apache 設定為處理具有較長逾時的請求。這可以透過在 Apache 配置中設定 KeepAliveTimeout 和 MaxKeepAliveRequests 指令來實現。

用於長輪詢的PHP 腳本

實現長輪詢的簡單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

在客戶端,您可以使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn