X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2Fcomet.js;h=3cd1b17dea9f98c97f7581012cf3db4899bc78bc;hp=5d848d69e614e0063f3d064bec475e20584d051e;hb=972919ab7f5651cd721eb6eec75f7150fdeaf347;hpb=3a3ceb24e4a4f3bbec9ec72c945b0cf1bb1ef1a6 diff --git a/js/comet.js b/js/comet.js index 5d848d6..3cd1b17 100644 --- a/js/comet.js +++ b/js/comet.js @@ -19,30 +19,30 @@ /*jslint laxbreak:true */ /** - * Permet de gérer les événements (push serveur). - * Principe de fonctionnement : - * - La page courante créer un objet euphorik.Comet en indiquant le nom de la page et la version du protocole - * - La page courante attend un événement en appelant 'waitEvent' et en donnant deux fonctions : - * - 'funSend' une fonction qui renvoie les données à envoyer avant l'attente, par exemple {"dernierMess" : 23} - * "header" et "page" seront ajoutés aux données - * - 'funsReceive' un ensemble de fonctions à appeler en fonction du "reply" du serveur - * - * l'information envoyée est sous la forme : - * { - * "header" : {"action" : "wait_event", "version" : }, - * "page" : - * [..] - * } - * l'information reçue est sous la forme : - * { - * "reply" : - * [..] - * } - * et sont de type chaine - * - * @page [string] la page courante pour laquelle on écoute des événements (un string) - * @util [int] la version - */ + * Permet de gérer les événements (push serveur). + * Principe de fonctionnement : + * - La page courante créer un objet euphorik.Comet en indiquant le nom de la page et la version du protocole. + * - La page courante attend un événement en appelant 'waitEvent' (non-bloquant) et en donnant deux fonctions : + * - 'funSend' une fonction qui renvoie l'objet à envoyer avant l'attente, par exemple {"dernierMess" : 23} + * ("header" et "page" sont automatiquement ajoutés à l'objet) + * - 'funsReceive' un ensemble de fonctions à appeler en fonction du "reply" du serveur, par exemple {"set_nom" : function(data) { print("ok : " + data.nom); } } + * + * l'information envoyée est sous la forme : + * { + * "header" : {"action" : "wait_event", "version" : }, + * "page" : + * [..] + * } + * l'information reçue est sous la forme : + * { + * "reply" : + * [..] + * } + * et sont de type chaine + * + * @page [string] la page courante pour laquelle on écoute des événements (un string) + * @util [int] la version + */ Comet = function(page, version) { this.page = page; this.version = version; @@ -66,7 +66,7 @@ Comet.prototype.stopAttenteCourante = function() { }; /** - * Attend un événement lié à la page. + * Attend un événement lié à la page. Non-bloquant. * @funSend une fonction renvoyant les données json à envoyer * @funsReceive est un objet comprenant les fonctions à appeler en fonction du "reply" * les fonctions acceptent un paramètre correspondant au données reçues. @@ -96,11 +96,11 @@ Comet.prototype.waitEvent = function(funSend, funsReceive) { dataType: "json", // TODO : doit disparaitre timeout: 180000, // timeout de 3min. Gros HACK pas beau. FIXME problème décrit ici : http://groups.google.com/group/jquery-en/browse_thread/thread/8724e64af3333a76 - data: { action : JSON.stringify(dataToSend) + data: { action : JSON.stringify(dataToSend) }, success: - function(data) { + function(data) { funsReceive[data.reply](data); - + // rappel de la fonction dans 100 ms setTimeout(function(){ thisComet.waitEvent2(funSend, funsReceive); }, 100); },