實作簡單的長輪詢
許多資源描述了長輪詢的概念,但實際的實作範例仍然難以捉摸。讓我們深入研究一個簡化版本,不依賴複雜的框架或伺服器配置。
使用 Apache 和 PHP 進行伺服器通訊
要處理伺服器請求,Apache 就夠了。下面的 PHP 腳本在隨機間隔後發送一個隨機字串,模擬即時訊息到達。有時,出於演示目的,它會傳回錯誤。
<?php if (rand(1, 3) == 1) { header("HTTP/1.0 404 Not Found"); die(); } sleep(rand(2, 10)); echo("Hi! Have a random number: " . rand(1, 10)); ?>
用於長輪詢的JavaScript 用戶端
在JavaScript 中,長輪詢器不斷要求上述腳本並等待回應:
<script type="text/javascript"> function waitForMsg() { $.ajax({ type: "GET", url: "msgsrv.php", success: function(data) { // Display the message $("#messages").append("<div class='msg new'>" + data + "</div>"); // Recursively invoke waitForMsg setTimeout(waitForMsg, 1000); }, error: function() { // Display the error message and restart the process after 15 seconds $("#messages").append("<div class='msg error'>Error encountered</div>"); setTimeout(waitForMsg, 15000); } }); } $(document).ready(function() { waitForMsg(); }); </script>
此腳本不斷檢查伺服器更新並顯示傳入訊息。合併了錯誤處理,長輪詢器會在指定的逾時時間後嘗試重新連線。
長輪詢的優點
長輪詢有幾個好處:
以上是如何使用 Apache 和 PHP 實作簡單的長輪詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!