实现基本长轮询:简单指南
长轮询是一种技术,用于使服务器能够将数据推送到客户端,而无需客户明确请求它。这在服务器需要持续监控数据并在新数据到达时通知客户端的场景非常有用。
长轮询如何工作?
在长轮询中,客户端向服务器发出请求并等待响应。如果没有可用数据,服务器将无限期地保持请求打开,而不是像常规 HTTP 请求那样关闭它。当有新数据可用时,服务器将其发送到客户端并关闭请求。
在 Apache 和 PHP 中实现长轮询
使用 Apache 和 PHP 实现长轮询PHP:
客户端实现使用Javascript
要使用 Javascript 在客户端实现长轮询:
示例代码
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));
Javascript 代码 (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中文网其他相关文章!