当前位置: 首页 > 面试题库 >

轮询多长时间

陈翰林
2023-03-14
问题内容

我正在研究ajax长期轮询,但感到困惑。传统的ajax调用和长时间轮询有什么不同

   var lpOnComplete = function(response) {
   alert(response);
   // do more processing
   lpStart();
  };

    var lpStart = function() {
    $.post('/path/to/script', {}, lpOnComplete, 'json');
    };

    $(document).ready(lpStart);

此示例仅以递归方式调用服务器。与setInterval中的传统调用不同。


问题答案:

顾名思义,“ 长时间轮询” 意味着长时间轮询某些内容。

$.post('/path/to/script', {}, lpOnComplete, 'json');

这是实际过程的开始,您对服务器上的某个脚本进行ajax调用,在本例中为/path/to/script,您需要使服务器脚本(php例如)足够智能,以便仅在所需数据可用时才响应请求,该脚本应等待指定的时间段(例如1分钟),并且如果1分钟之内没有可用数据,则该脚本应不包含数据而返回。

服务器返回内容后,立即在回调函数中再次对同一脚本进行ajax调用,服务器脚本再次继续该过程。

考虑一个聊天应用程序,按照常规方式,您轮询服务器说是每2秒一次,即使没有消息可用,服务器也会返回消息。如果一分钟内服务器没有收到新消息,您最后将服务器击中30次等一下。

现在考虑采用 长轮询
方式,您将服务器脚本设置为等待一分钟以接收新消息。从客户端,您对脚本进行了一个ajax调用,并说下一分钟没有消息到达,服务器将在1分钟后响应。您在过去1分钟内仅一次击中服务器。你能想象
30命中vs 1命中



 类似资料:
  • 问题内容: 我最近在StackOverflow上问了一个有关我的功能的问题,人们建议我使用Ajax Long Polling。我花了几天的时间研究该主题,并尝试编写基本的长轮询代码,但是这些代码都没有起作用,而且我什么也做不了。 这是我的基本功能: 有人能够告诉我如何将其转变为基本的长轮询功能,或者甚至直接指向我需要到达的路径。很感谢任何形式的帮助。谢谢! 问题答案: 通常(即,当不使用长时间轮询

  • 长轮询在GCP PubSub JS SDK上可用吗? 我希望能够同时处理多个PubSub消息,例如: 这是它将如何在AWS上工作的一个示例: SQS队列包含超过5条消息。 侦听器将在单个中一次获得5条消息。事件

  • 长轮询是与服务器保持持久连接的最简单的方式,它不使用任何特定的协议,例如 WebSocket 或者 Server Sent Event。 它很容易实现,在很多场景下也很好用。 常规轮询 从服务器获取新信息的最简单的方式是定期轮询。也就是说,定期向服务器发出请求:“你好,我在这儿,你有关于我的任何信息吗?”例如,每 10 秒一次。 作为响应,服务器首先通知自己,客户端处于在线状态,然后 —— 发送目

  • 我想测量和比较长轮询和WebSocket之间的服务器性能。我用ratchet(PHP websockets)构建了一个简单的PHP应用程序,它只在控制台中输出数据(指南:http://socketo.me/docs/hello-world)。长轮询应用程序也是PHP,只生成随机数并将其记录在控制台中(本文:如何实现基本的“长轮询”?)。 有没有办法在不使用数据库的情况下对这些应用程序进行公平的比较

  • 我想在Spring Boot中遇到下面的用例。 我有一个第三方REST API,如果有任何东西要返回,它会尽快返回响应,或者花10秒钟发送空白响应。 我需要连续调用这个API,这意味着如果API返回响应,将该响应发送到进程,然后再次调用该API,这意味着我需要长时间轮询该API,但没有时间间隔,一旦我得到响应,就再次轮询。 我要独立线程处理响应。 这不是web应用程序。我只想用纯java(spri