2012-05-30 11 views
31

Jetzt sind in den meisten populären Sites, die häufig verwendet werden, einige Tage Echtzeit-Updates üblich.Wie funktionieren Echtzeit-Updates?

Ich frage mich, wie diese "Updates in Echtzeit" arbeiten? Ich suche nur nach einer allgemeinen Vogelperspektive. Ich vermute, dass der JS den Server nicht alle X Sekunden für ein Update aufrufen kann und dann das an die <ul> anhängen. Wird eine Benachrichtigung vom Server gesendet, um mehr Inhalte zu ziehen?

Wäre es toll, wenn es einen einfachen Artikel gibt, der das mit einer Demo erklärt?

+5

Zwei Wörter: [web-Buchsen] (http://en.wikipedia.org/wiki/WebSocket) – Dennis

+1

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

+21

Ein Wort: [WebSocket] (http://en.wikipedia.org/wiki/WebSocket) –

Antwort

22

Stack Overflow verwendet Web Sockets für Echtzeit-Updates. Wenn Sie einen Blick in den Quellcode (Linie 35) nehmen, würden Sie sehen:

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

Aber beachten Sie, dass einige Opera-Versionen nicht WebSocket unterstützt. (not until Opera 10.70)

jedoch Facebook scheint nicht Web Sockets zu verwenden, und ich denke, sie sind nur mit einfachen XHR mit einer Technik namens long polling, die der Server an den Anschluss hält, bis es neue Informationen gibt, und dann den Server wird auf die Anfrage antworten. Wenn Sie die Entwicklerwerkzeuge öffnen, können Sie sehen, dass immer eine Anforderung mit dem Status "Ausstehend" vorhanden ist.

Es ist in der Tat, Senden einer Anfrage alle ~ 60 Sekunden.

2

Es scheint, dass Twitter auch einfache XHR (1-Minuten-Intervalle) für ihre "Echtzeit-Updates" verwendet.

0

Facebook verwendet long polling/Comet. Also macht es eine Verbindung und wartet auf eine Antwort, wenn keine Antwort kommt, dann Timeout und versucht es erneut. Die Zeitüberschreitung beträgt ca. 40 Sekunden. So macht es die meisten Instant-Updates. Sie verwenden jedoch eine Kombination von Techniken. Mehr über lange Umfragen hier.

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