当前位置: 首页 > 知识库问答 >
问题:

长轮询如何工作JavaScript?

王曜文
2023-03-14

嗨,我知道在长轮询中,你保持与服务器的连接打开很长时间,直到你从服务器得到响应,然后再次轮询,等待下一个响应。然而,我似乎不明白如何编写它。下面的代码使用长轮询,但我似乎不明白

(function poll(){
$.ajax({ url: "server", success: function(data){
   //update page based on data

}, dataType: "json", complete: poll, timeout: 30000 });
})();

共有1个答案

年凯康
2023-03-14

客户端无法强制服务器保持连接打开。服务器只是没有关闭连接。服务器将不得不在某个时候说“到此为止,这里没有更多的内容,再见”。在长轮询中,服务器只是从不这样做,让客户机等待更多的数据,随着更新的到来,这些数据一点一点地流出。那是漫长的投票。

在客户端,当请求尚未完成时,可以偶尔检查已经接收的数据。这样,数据偶尔可以通过同一个打开的连接从服务器发送。在您的情况下,没有执行此操作,success回调仅在请求完成时才会触发。它基本上是一种廉价的长轮询形式,在这种形式中,服务器让客户机等待一个事件,发送关于该事件的数据,然后关闭连接。客户机将其作为触发器,处理数据,然后重新连接到服务器以等待下一个事件。

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

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

  • 问题内容: 我可以找到许多有关LongPolling工作原理的信息例如this和this],但是没有_简单的_ 示例说明如何在代码中实现这一点。 我所能找到的就是cometd,它依赖于Dojo JS框架和相当复杂的服务器系统。 基本上,我将如何使用Apache来处理请求,以及如何编写一个简单的脚本(例如PHP)来“长时间轮询”服务器以接收新消息? 该示例不必是可伸缩的,安全的或完整的,只需要工作即

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

  • 问题内容: 我正在研究ajax长期轮询,但感到困惑。传统的ajax调用和长时间轮询有什么不同 此示例仅以递归方式调用服务器。与setInterval中的传统调用不同。 问题答案: 顾名思义,“ 长时间轮询” 意味着长时间轮询某些内容。 这是实际过程的开始,您对服务器上的某个脚本进行ajax调用,在本例中为,您需要使服务器脚本(例如)足够智能,以便仅在所需数据可用时才响应请求,该脚本应等待指定的时间

  • 我需要为聊天应用程序实现。我已经搜索过了,但我只找到了如何使用在中实现它。如何仅使用和实现它?你能给我介绍一些相关的文章或资料吗?