X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2Fcomet.js;fp=js%2Fcomet.js;h=0000000000000000000000000000000000000000;hp=8c427c978bf44f96cfa202723b8982cbe9e0b6e3;hb=d6dcd0fd8af56bd4791aa4e621c2e5058033c37a;hpb=27c4a5ac9000ca933f28abfedbf9607f73619615
diff --git a/js/comet.js b/js/comet.js
deleted file mode 100644
index 8c427c9..0000000
--- a/js/comet.js
+++ /dev/null
@@ -1,123 +0,0 @@
-// coding: utf-8
-// Copyright 2008 Grégory Burri
-//
-// This file is part of Euphorik.
-//
-// Euphorik is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Euphorik is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Euphorik. If not, see .
-
-/*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' (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;
-
- // l'objet JSONHttpRequest représentant la connexion d'attente
- this.attenteCourante = undefined;
-
- // le multhreading du pauvre, merci javascript de m'offrire autant de primitives pour la gestion de la concurrence...
- this.stop = false;
-};
-
-/**
- * Arrête l'attente courante s'il y en a une.
- */
-Comet.prototype.stopAttenteCourante = function() {
- this.stop = true;
-
- if (this.attenteCourante) {
- this.attenteCourante.abort();
- }
-};
-
-/**
- * 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.
- * exemple : {"new_message" : function(data){ ... }}
- */
-Comet.prototype.waitEvent = function(funSend, funsReceive) {
- this.stopAttenteCourante();
-
- this.stop = false;
-
- var thisComet = this;
-
- // on doit conserver l'ordre des valeurs de l'objet JSON (le serveur les veut dans l'ordre définit dans le protocole)
- // TODO : ya pas mieux ?
- var dataToSend = {
- "header" : { "action" : "wait_event", "version" : this.version },
- "page" : this.page
- };
- var poulpe = funSend();
- objectEach(poulpe, function(k, v) {
- dataToSend[k] = v;
- });
-
- this.attenteCourante = jQuery.ajax({
- type: "POST",
- url: "request",
- 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) },
- success:
- function(data) {
- funsReceive[data.reply](data);
-
- // rappel de la fonction dans 100 ms
- setTimeout(function(){ thisComet.waitEvent2(funSend, funsReceive); }, 100);
- },
- error:
- function(XMLHttpRequest, textStatus, errorThrown) {
- ;; console.log("Connexion perdue dans Comet.prototype.waitEvent() : \n" + textStatus);
- setTimeout(function(){ thisComet.waitEvent2(funSend, funsReceive); }, 1000);
- }
- });
-};
-
-/**
- * Si un stopAttenteCourante survient un peu n'importe quand il faut imédiatement arreter de boucler.
- */
-Comet.prototype.waitEvent2 = function(funSend, funsReceive) {
- if (this.stop) {
- return;
- }
- this.waitEvent(funSend, funsReceive);
-};
\ No newline at end of file