【问题标题】:How do websites instantly update their content using AJAX?网站如何使用 AJAX 即时更新其内容?
【发布时间】:2012-03-14 21:45:09
【问题描述】:

今天,当我在两个不同的浏览器中使用 Google+ 时,我用一个浏览器发布了一些内容。该帖子几乎立即出现在第二个浏览器上(可能有 0.5 秒的延迟)。谷歌是如何做到这一点的?他们是否经常发送 AJax 请求以检查新帖子?这不会给服务器带来很大的压力吗?

【问题讨论】:

标签: javascript ajax


【解决方案1】:

有多种方法可以做到这一点:

  • 网络套接字
  • AJAX 长轮询
  • 页面计时器
  • iframe

每个人都有自己的注意事项和可能性。

如果您有兴趣做一个实时应用程序,您可以看看socket.io,它是所有这些技术的一个很棒的抽象库,所以它会使用最好的那个在您的浏览器中支持。

【讨论】:

    【解决方案2】:

    不能确切地说谷歌是如何做到的,但他们必须使用某种push technology。 HTML5 WebSockets 可以在较新的浏览器中执行此操作。在不支持 websockets 的旧浏览器中,客户端通常会定期轮询服务器。请参阅socket.io 了解 WebSockets 的简洁跨浏览器实现,如果浏览器不支持它,可以回退到其他方法,documented here

    【讨论】:

      【解决方案3】:

      我想他们可以使用的一种技术是立即发送 AJAX 请求,然后在服务器端阻止它,直到超时或可以发送内容。

      【讨论】:

      • 这就是所谓的“长轮询”。您成功的回调会立即重新发起呼叫。服务器保持打开状态,直到有数据通过通道发送回。
      【解决方案4】:

      多年来,谷歌一直在使用 Comet 或 Reverse Ajax:http://en.wikipedia.org/wiki/Comet_(programming))

      但是,我相信他们现在正在使用 HTML5 WebSocket,因为 API 已经准备就绪: http://en.wikipedia.org/wiki/WebSocket/

      http://dev.w3.org/html5/websockets/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-13
        • 2014-12-11
        • 2021-09-17
        • 1970-01-01
        • 1970-01-01
        • 2019-12-24
        • 2018-01-28
        • 2014-12-30
        相关资源
        最近更新 更多