如何实时更新工作?(How do real time updates work?)

2019-06-24 23:05发布

现在,天实时更新,其中有大用途最流行的网站常见。

  • StackExchange
  • Facebook的
  • 推特

我想知道如何做这些“实时更新”工作? 我只是在寻找一个一般的鸟瞰视角。 我怀疑JS无法调用服务器每X秒的更新,然后追加,要在<ul> 从服务器发送一个通知去拉更多的内容?

将是巨大的,如果有一个简单的如何文章与演示解释呢?

Answer 1:

堆栈溢出是利用网络套接字进行实时更新。 如果你把源代码(2012代码)一看,你会看到:

StackExchange.ready(function () {
    StackExchange.realtime.init('ws://sockets.ny.stackexchange.com');
    StackExchange.realtime.subscribeToInboxNotifications();
    StackExchange.realtime.subscribeToReputationNotifications('1');
});

但需要注意的一些歌剧版本不支持WebSocket的。 ( 直到歌剧10.70 )

但是Facebook的似乎不使用网络插座,我认为他们只是用简单的XHR有一种被称为长轮询 ,该服务器持有的连接,直到有新的信息,然后响应该请求。 如果你打开了开发工具,你可以看到,总有它有悬而未决的状态一个请求。

这的确是,发送请求每〜60秒。



Answer 2:

看来,Twitter的使用也为他们的“实时更新”简单XHR(1个分钟间隔)。



Answer 3:

Facebook的使用long polling/Comet 。 因此,它使一个响应的连接,并等待,如果没有响应,然后超时并再次尝试。 超时是大约40秒。 这就是如何做最即时更新的。 但是他们使用的技术的组合。 更多关于长轮询这里。

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



文章来源: How do real time updates work?