2012-05-30 55 views
31

現在有一天,實時更新在大多數常用網站都很常見,這些網站有很多用途。實時更新如何工作?

我想知道如何做這些 「實時更新」 工作?我只是在尋找一個普通的鳥類視角。我懷疑JS無法每隔X秒更新一次,然後將其附加到<ul>。是否從服務器發送通知去獲取更多內容?

如果有一個簡單的文章解釋這與演示?

+5

兩個詞:網絡插座(http://en.wikipedia.org/wiki/WebSocket) – Dennis

+1

[這](http://en.wikipedia.org/wiki/WebSocket) HTML5](http://www.html5rocks.com/en/tutorials/websockets/basics/)。 –

+21

其中一個詞:[WebSocket](http://en.wikipedia.org/wiki/WebSocket) –

回答

22

堆棧溢出使用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秒發送一次請求。

2

似乎Twitter也使用簡單的XHR(1分鐘間隔)進行「實時更新」。

0

Facebook使用long polling/Comet。所以它建立連接並等待響應,如果沒有響應,則超時並再次嘗試。超時時間約爲40秒。這就是大部分即時更新的方式。然而,他們使用技術的組合。更多關於這裏的長時間投票。

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