长轮询是 Web 应用程序中使用的一种轮询技术,使服务器能够向客户端发送数据,而无需等待显式请求。实现长轮询涉及在客户端和服务器之间建立持久连接。
要为长轮询请求提供服务,请将 Apache 配置为处理具有较长超时的请求。这可以通过在 Apache 配置中设置 KeepAliveTimeout 和 MaxKeepAliveRequests 指令来实现。
实现长轮询的简单 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 建立与 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中文网其他相关文章!