2010-01-19 8 views
5

Seine Funktion ist so genannte "Server-Push", die Google-Welle scheint auch nutzt.Komet am Beispiel verstehen

Kann jemand dieses Konzept von Code-Schnipsel erklären, wie es tatsächlich in Webanwendung funktioniert?

Antwort

2

Einige Pseudo-javascript:

<script> 
//open connection to the server, updateFunc is called every time server sends stuff 
//For example ticker price for Google (GOOG) 
var connection = CometLibrary.subscribe("http://server", "GOOG", updateFunc); 

//data is JSON-encoded 
function upudateFunc(data) { 
    var elem = $("#GOOG .last"); 
    if (elem.value < data.last) 
    elem.css("color", "green"); 
    else (elem.value > data.last) 
    elem.css("color", "red"); 
    elem.value = data.last; 
} 

</script> 
<span id="GOOG">GOOG: <span class="last"></span></span> 

So ist der obige Code stellt eine persistente Verbindung zum Server und die Callback-Funktion wird jedes Mal gibt es ein Update auf dem Server aufgerufen. Der Preis ändert seine Farbe, wenn er nach oben oder unten geht und bleibt die Farbe, die er vorher war, wenn es keine Änderung gibt.

Alternative dazu wäre, einen Intervall-Timer zu haben, der AJAX-Anfrage alle so viele Sekunden macht, die den Overhead des Aufbaus und des Abreißens einer Verbindung hat.

+0

Wie läuft 'CometLibrary' ab? Wie läuft die Clientseite, wenn die Verbindung der Anfrage noch nicht beendet ist? – user198729

+0

spielen mit diesem: http://goldfishserver.com/ Wenn Sie eine Nachricht in einem anderen Browser eingeben, könnten Sie sehen, dass die Dinge in Firefox aktualisiert werden. Sie werden auch sehen, dass neue Sachen auf der gleichen Verbindung kommen. Die Tatsache, dass diese Verbindung alle 5 Sekunden zurückgesetzt wird, ist für eine Verbindungsfehlererkennung gedacht. –

+0

Wie, wie es, implementiert, vertrauen Sie mir, Sie wollen nicht wissen. Es ist eine Menge kniffeliger Hacking involviert. –