現在有一天,實時更新在大多數常用網站都很常見,這些網站有很多用途。實時更新如何工作?
- StackExchange
- Facebook的
- Twitter的
我想知道如何做這些 「實時更新」 工作?我只是在尋找一個普通的鳥類視角。我懷疑JS無法每隔X秒更新一次,然後將其附加到<ul>
。是否從服務器發送通知去獲取更多內容?
如果有一個簡單的文章解釋這與演示?
現在有一天,實時更新在大多數常用網站都很常見,這些網站有很多用途。實時更新如何工作?
我想知道如何做這些 「實時更新」 工作?我只是在尋找一個普通的鳥類視角。我懷疑JS無法每隔X秒更新一次,然後將其附加到<ul>
。是否從服務器發送通知去獲取更多內容?
如果有一個簡單的文章解釋這與演示?
堆棧溢出使用Web Sockets進行實時更新。如果你把源代碼(35行)一看,你會看到:
StackExchange.ready(function() {
StackExchange.realtime.init('ws://sockets.ny.stackexchange.com');
StackExchange.realtime.subscribeToInboxNotifications();
StackExchange.realtime.subscribeToReputationNotifications('1');
});
但需要注意的一些歌劇的版本不支持WebSocket的。 (not until Opera 10.70)
然而Facebook似乎不使用網絡插座,我認爲他們只是使用了一個名爲long polling技術,它的服務器保存到連接,直到有新的信息,然後服務器簡單XHR會迴應請求。如果您打開開發人員工具,則可以看到總是有一個請求處於掛起狀態。
確實是每隔60秒發送一次請求。
似乎Twitter也使用簡單的XHR(1分鐘間隔)進行「實時更新」。
Facebook使用long polling/Comet
。所以它建立連接並等待響應,如果沒有響應,則超時並再次嘗試。超時時間約爲40秒。這就是大部分即時更新的方式。然而,他們使用技術的組合。更多關於這裏的長時間投票。
兩個詞:網絡插座(http://en.wikipedia.org/wiki/WebSocket) – Dennis
[這](http://en.wikipedia.org/wiki/WebSocket) HTML5](http://www.html5rocks.com/en/tutorials/websockets/basics/)。 –
其中一個詞:[WebSocket](http://en.wikipedia.org/wiki/WebSocket) –