现在,在大多数使用量很大的流行网站中,实时更新很常见。
- 堆栈交换
- 推特
我想知道这些“实时更新”是如何工作的?我只是在寻找一般的鸟瞰视角。我怀疑 JS 不能每 X 秒调用一次服务器进行更新,然后将其附加到<ul>
. 是从服务器发送的通知去拉更多的内容吗?
如果有一个简单的如何用演示解释这一点的文章会很棒吗?
现在,在大多数使用量很大的流行网站中,实时更新很常见。
我想知道这些“实时更新”是如何工作的?我只是在寻找一般的鸟瞰视角。我怀疑 JS 不能每 X 秒调用一次服务器进行更新,然后将其附加到<ul>
. 是从服务器发送的通知去拉更多的内容吗?
如果有一个简单的如何用演示解释这一点的文章会很棒吗?
Stack Overflow 使用Web Sockets进行实时更新。如果您查看源代码(2012 源代码),您会看到:
StackExchange.ready(function () {
StackExchange.realtime.init('ws://sockets.ny.stackexchange.com');
StackExchange.realtime.subscribeToInboxNotifications();
StackExchange.realtime.subscribeToReputationNotifications('1');
});
但请注意,某些 Opera 版本不支持 WebSocket。(直到 Opera 10.70)
但是 Facebook 似乎没有使用 Web Sockets,我认为他们只是使用简单的 XHR 和一种称为长轮询的技术,服务器保持连接直到有新信息,然后响应请求。如果您打开开发人员工具,您会看到始终有一个请求处于待处理状态。
确实,每 60 秒发送一次请求。
Twitter 似乎也使用简单的 XHR(1 分钟间隔)进行“实时更新”。
Facebook 使用long polling/Comet
. 因此它建立连接并等待响应,如果没有响应,则超时并重试。超时时间约为 40 秒。这就是大多数即时更新的方式。然而,他们使用了多种技术的组合。更多关于长轮询的信息。