首頁 > 後端開發 > php教程 > 長輪詢如何運作以及如何使用 Apache、PHP 和 Javascript 來實現?

長輪詢如何運作以及如何使用 Apache、PHP 和 Javascript 來實現?

Linda Hamilton
發布: 2024-12-26 16:46:15
原創
575 人瀏覽過

How Does Long Polling Work and How Can It Be Implemented Using Apache, PHP, and Javascript?

實現基本長輪詢:簡單指南

長輪詢是一種技術,用於使伺服器能夠將資料推送到客戶端,而無需客戶明確請求它。這在伺服器需要持續監控資料並在新資料到達時通知客戶端的場景非常有用。

長輪詢如何運作?

在長輪詢中,客戶端向伺服器發出請求並等待回應。如果沒有可用數據,伺服器將無限期地保持請求打開,而不是像常規 HTTP 請求那樣關閉它。當有新資料可用時,伺服器將其發送到客戶端並關閉請求。

在Apache 和PHP 實現長輪詢

使用Apache 和PHP 實現長輪詢PHP:

  1. 創建PHP腳本(msgsrv.php):
  2. 此腳本將處理客戶端的請求,並在資料可用時發送回應。
  3. 設定 Apache 來提供 PHP 腳本服務:
  4. 將 Apache 伺服器設定為處理對 msgsrv.php 的請求。

客戶端實作使用Javascript

要使用Javascript 在客戶端實作長輪詢:
  1. 創建🎜>建立到伺服器的初始請求:
  2. 客戶端向伺服器發出請求msgsrv.php 並等待回應。
  3. 處理成功回應:
  4. 如果收到回應,將其附加到頁面上的指定元素,並在延遲後觸發新請求。
  5. 處理錯誤:
  6. 如果請求失敗,則顯示錯誤訊息並在較長延遲後重試。

範例程式碼

PHP 腳本(msgsrv.php):

if (rand(1, 3) == 1) {
    // Fake an error
    header("HTTP/1.0 404 Not Found");
    die();
}

// Send a string after a random number of seconds (2-10)
sleep(rand(2, 10));
echo("Hi! Have a random number: " . rand(1, 10));
登入後複製

Java代碼(long_poller.htm):

<script type="text/javascript">
function waitForMsg() {
    $.ajax({
        type: "GET",
        url: "msgsrv.php",
        async: true,
        cache: false,
        timeout: 50000,

        success: function (data) {
            // Add response to a .msg div (with the "new" class)
            addmsg("new", data);
            setTimeout(waitForMsg, 1000); // Request next message after 1 second
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            // Add error message
            addmsg("error", textStatus + " (" + errorThrown + ")");
            setTimeout(waitForMsg, 15000); // Retry after 15 seconds
        }
    });
};

$(document).ready(function () {
    waitForMsg(); // Start the initial request
});
</script>
登入後複製

以上是長輪詢如何運作以及如何使用 Apache、PHP 和 Javascript 來實現?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板