长轮询是一种轮询技术,可以长时间保持连接打开,以便在服务器更新可用时实现即时响应。它的实现非常简单。
要使用 Apache 处理请求,请创建一个 PHP 脚本,例如 msgsrv.php。这是一个简单的示例:
// Simulate data availability after a random delay sleep(rand(2, 10)); echo("Hi! Here's a random number: " . rand(1, 10));
在 Apache 上运行此脚本。请注意,使用像 Apache 这样的大容量网络服务器可能会导致工作线程耗尽。
在 JavaScript 中,您可以使用像 long_poller.htm 这样的脚本来发起轮询请求:
<script> function waitForMsg() { $.ajax({ type: "GET", url: "msgsrv.php", async: true, cache: false, timeout: 50000, success: function(data) { // Append the response to a div addmsg("new", data); // Continue polling after 1 second setTimeout(waitForMsg, 1000); }, error: function(..., errorThrown) { // Append error to div addmsg("error", textStatus + " (" + errorThrown + ")"); // Retry after 15 seconds setTimeout(waitForMsg, 15000); } }); } $(document).ready(function() { waitForMsg(); // Start the initial request }); </script>
该脚本不断向 msgsrv.php 发出请求,并在 div 中显示响应。它使用简单的速率限制器来防止过多的请求。
长轮询提供弹性和简单性。如果网络中断,客户端会自动重试。对于需要从服务器立即更新的应用程序来说,它是一个合适的选择,例如即时消息或聊天应用程序。
以上是如何使用 Apache 和 JavaScript 实现基本的长轮询?的详细内容。更多信息请关注PHP中文网其他相关文章!