首页 > 后端开发 > php教程 > 长轮询如何工作以及如何使用 Apache、PHP 和 Javascript 来实现?

长轮询如何工作以及如何使用 Apache、PHP 和 Javascript 来实现?

Linda Hamilton
发布: 2024-12-26 16:46:15
原创
579 人浏览过

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. 设置 Apache 来为 PHP 脚本提供服务:将 Apache 服务器配置为处理对 msgsrv.php 的请求。

客户端实现使用Javascript

要使用 Javascript 在客户端实现长轮询:

  1. 创建到服务器的初始请求:客户端向服务器发出请求msgsrv.php 并等待响应。
  2. 处理成功响应:如果收到响应,将其附加到页面上的指定元素,并在延迟后触发新请求。
  3. 处理错误:如果请求失败,则显示错误消息并在较长延迟后重试。

示例代码

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板