2010-01-19 8 views
5

Sa fonction est appelée "push serveur", ce que google wave semble également tirer parti.Comprendre la comète par l'exemple

Quelqu'un peut-il expliquer ce concept par extrait de code comment cela fonctionne réellement dans une application web?

Répondre

2

Certains 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> 

Ainsi, le code ci-dessus établit une connexion permanente au serveur et la fonction de rappel est appelée chaque fois qu'il ya une mise à jour sur le serveur. Le prix change de couleur s'il monte ou descend et reste la couleur qu'il était auparavant s'il n'y a pas de changement. Une alternative à cela serait d'avoir un temporisateur d'intervalle faisant une requête AJAX toutes les quelques secondes, ce qui a le temps nécessaire pour établir et arrêter une connexion.

+0

Comment 'CometLibrary' est-il implémenté? Comment le côté client obtient-il une réponse si la connexion de la requête n'est pas encore terminée? – user198729

+0

jouez avec ceci: http://goldfishserver.com/ Si vous tapez un message dans un autre navigateur, vous pourriez voir les choses mises à jour dans firefox. Vous verrez également que de nouvelles choses arrivent sur la même connexion. Le fait que cette connexion se réinitialise toutes les 5 secondes est pour la détection d'erreur de connexion, je pense. –

+0

Quant à la façon dont il est mis en œuvre, croyez-moi, vous ne voulez pas savoir. Il y a beaucoup de piratage compliqué. –