首页 >后端开发 >php教程 >长轮询在 Web 应用程序中如何工作?

长轮询在 Web 应用程序中如何工作?

Susan Sarandon
Susan Sarandon原创
2024-12-28 15:09:17241浏览

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