Facebook实时如何运作?

时间:2017-05-12 18:53:30

标签: facebook real-time publish-subscribe

我不知道如何正式陈述这个问题,因为我不知道这里到底发生了什么。 每当有任何用户对我的帖子发表评论时,facebook就会发出如下所示的请求,在没有我做任何事情的情况下显示该评论。他们怎么做?

https://0-edge-chat.facebook.com/pull?channel=p_100009456028304

这不能是推送通知,因为他们正在不断地提出拉取请求(我使用浏览器中提供的开发人员工具进行检查,尽管我 我不确定它是否是推送通知。)他们不断向上面的URL发出拉动请求。这项技术被称为什么? Constant request 有人可以帮我理解这一点。 也许这个问题是重复的,已经在堆栈溢出时得到了答案。但是 因为我不知道这是什么,所以很难搜索。(我试过但找不到任何东西)

1 个答案:

答案 0 :(得分:1)

正如在评论中正确地说的那样,这称为长轮询。 简而言之,有5种方法可以在网页中实现实时更新:

  1. 网络推送
  2. 的WebSockets
  3. HTTP Streaming
  4. HTTP长轮询
  5. HTTP轮询
  6. Facebook正在使用长轮询,轮询超时为50秒。 这意味着浏览器向服务器发出HTTP请求。如果没有可用的更新,则服务器将保留该请求最多50秒。这样,只要有更新,就可以将其推送到客户端,而无需等待新的客户端请求(如在正常轮询中)。