实时更新如何工作?

时间:2012-05-30 01:31:42

标签: javascript real-time stackexchange

现在,在大多数热门网站中,实时更新很常见。

我想知道这些“实时更新”是如何工作的?我只是在寻找一般鸟类的观点。我怀疑JS不能每隔X秒调用服务器进行更新,然后将其附加到<ul>。从服务器发送的通知是否会提取更多内容?

如果有一篇简单的文章如何通过演示来解释这个问题会很棒吗?

3 个答案:

答案 0 :(得分:25)

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。 (not until Opera 10.70

然而,Facebook似乎没有使用Web套接字,我认为他们只是使用简单的XHR和一种名为long polling的技术,服务器保留连接直到有新信息,然后回复对请求。如果您打开开发人员工具,则可以看到总有一个请求具有待处理状态。

确实,每隔约60秒发送一次请求。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

Facebook使用long polling/Comet。所以它建立连接并等待响应,如果没有响应,则超时并再次尝试。超时约为40秒。这就是大多数即时更新的方式。然而,他们使用技术的组合。更多关于长期投票的信息。

http://en.wikipedia.org/wiki/Comet_(programming)