Javascript 实时更新是如何工作的?

Javascript 实时更新是如何工作的?,javascript,real-time,stackexchange,Javascript,Real Time,Stackexchange,现在,实时更新在大多数使用量很大的流行网站上很常见 脸谱网 推特 我想知道这些“实时更新”是如何工作的?我只是在找一个大致的鸟瞰图。我怀疑JS不可能每X秒调用服务器一次更新,然后将其附加到中。是否从服务器发送通知以获取更多内容 如果有一篇简单的how-to文章用演示来解释这一点,那就太好了。Stack Overflow用于实时更新。如果查看源代码(2012源代码),您将看到: StackExchange.ready(function () { StackExchange.realt

现在,实时更新在大多数使用量很大的流行网站上很常见

  • 脸谱网
  • 推特
我想知道这些“实时更新”是如何工作的?我只是在找一个大致的鸟瞰图。我怀疑JS不可能每X秒调用服务器一次更新,然后将其附加到
中。是否从服务器发送通知以获取更多内容

如果有一篇简单的how-to文章用演示来解释这一点,那就太好了。

Stack Overflow用于实时更新。如果查看源代码(2012源代码),您将看到:

StackExchange.ready(function () {
    StackExchange.realtime.init('ws://sockets.ny.stackexchange.com');
    StackExchange.realtime.subscribeToInboxNotifications();
    StackExchange.realtime.subscribeToReputationNotifications('1');
});
但请注意,有些Opera版本不支持WebSocket。()

然而,Facebook似乎没有使用Web套接字,我认为他们只是使用简单的XHR技术,称为,服务器保持连接,直到有新信息,然后响应请求。如果打开开发人员工具,您可以看到始终有一个状态为“挂起”的请求


的确,每60秒发送一次请求。

Twitter似乎也使用简单的XHR(1分钟间隔)进行“实时更新”。

Facebook使用
长轮询/Comet
。因此,它建立连接并等待响应,如果没有响应,则超时并重试。超时时间约为40秒。这就是它进行大多数即时更新的方式。然而,他们使用了多种技术的结合。更多关于长时间投票的信息

两个字:。一个字: