X-Git-Url: http://git.euphorik.ch/index.cgi?a=blobdiff_plain;f=conception%2Ffonctionnement_minichat.txt;fp=conception%2Ffonctionnement_minichat.txt;h=0000000000000000000000000000000000000000;hb=61d94ea9525c4de474312955cc5c2b81ba08ae07;hp=2ae4681cc9f7fa3fd6b202a030b863fb8c0ad33c;hpb=c1c5ba74ec0e1a3aeaf4826c266a438cf2897b5e;p=euphorik.git diff --git a/conception/fonctionnement_minichat.txt b/conception/fonctionnement_minichat.txt deleted file mode 100755 index 2ae4681..0000000 --- a/conception/fonctionnement_minichat.txt +++ /dev/null @@ -1,203 +0,0 @@ -Euphorik - minichat -------------------- - -A. Introduction ---------------- - -Le minichat utilise AJAX. Tous les messages sont au format XML -Eventuellement utiliser comet comme décrit ici - : http://www.zeitoun.net/index.php?2007/06/22/46-how-to-implement-comet-with-php - - -Structure : ------------ - -Les objets globaux : - - Messages (liste des messages actuellement affichés, permet de recupérer les nouveaux messages) - - Connexion (Information sur la connexion, information sur le user actuel) - - -B. Principe ------------ -Termes : serveur, client, utilisateur - - 1 Chargement de la page html. - 2 Le client écoute les derniers messages au serveur (asynchrone). - 3 Le client est initialement déconnecté, il regarde si un cookie existe sur la machine cliente : - a Si oui : il tente un login avec le cookie, si ok alors le client est connecté sinon il reste dans l'état déconnecté. - b Si non : il demande au serveur la génération d'un captcha et l'affiche. - 4 L'utilisateur peut alors envoyer un message. Il doit saisir le captcha s'il l'état et déconnecté. - a Si le captcha a été saisie le client envoie une requête de login - 5 Le message est posté - - -Principe concernant le rafraichissement: - * Le client envoie une demande au serveur avec l'id du dernier message (via XMLHttpRequest ou un méthode de JQuery) - * Le serveur maintient la connexion bloqué si le client est à jour. - * Dès que le serveur n'est plus à jours, il envoie les messages manquants. - -Problème : - * Comment faire de l'attente passive sur le serveur en écoutant l'arrivée d'un nouveau message au niveau de la bd - -> en utilisant le "event handling" de mnesia : http://www.erlang.org//doc/apps/mnesia/part_frame.html - chapitre 5.7 et 5.7.2 - - -C. Protocole ------------- -c : client -s : server - -C.1. Demande de génération d'un nouveau captcha : ------------------------------------------------ - -c -> s - - - -s -> c - - img/tmp/b1b1b4e72e6f3d00e477cf37cced5851.jpg - b1b1b4e72e6f3d00e477cf37cced5851 - - -C.2. Login : ------------- -le message du client est posté par la méthode POST et se nomme 'action'. - -c -> s -(nouveau user) (obsolète) - - b1b1b4e72e6f3d00e477cf37cced5851 - LKJDLA - - -ou -(ne sert pour l'instant qu'a mettre à jour user.date_derniere_connexion) -(si le login est faut, une temporisation est effectuée) - - LKJDLAKSJBFLKASN - - -ou - - Paul - IJKJDHHSAD9081238 - - - - Paul - IJKJDHHSAD9081238 - - -ou (login et password peuvent être omis) - - Paul - IJKJDHHSAD9081238 - - -s -> c -( et pas obligatoire) - - enregistre|identifie|erreur - LKJDLAKSJBFLKASN - 7ZS - Paul - paul49 - paul@pierre.com - css/lite.css - blabla - - - -C.3. Logout : -------------- -c -> s - - LKJDLAKSJBFLKASN - - -C.4. Profile : --------------- -modification du profile, seul 'cookie' est obligatoire - -c -> s - - LKJDLAKSJBFLKASN - paul49 - IJKJDHHSAD9081238 - Paul - paul@pierre.com - css/dark.css - - -s -> c - - ok|pas ok - balbla> - - - -C.5. Refresh messages : ------------------------ - -Si dernierMessageId est absent alors le client ne possède pas de message. -Page peut être omis, il a alors la valeur 1 (première page) -dernierMessageId est en base 36 (l'histoire de rigoler un peu) - -c -> s - - LKJDLAKSJBFLKASN - 6ZR - 10 - 1 - - -s -> c - - 4 - - Hier 17:26:54 - - - - - Paul - paul_22 - Salut - - - - - - - - - -ou - - - raison - - -C.6. Envoie message : ---------------------- - -Un client envoie un message, le message peut répondre à un certain nombre d'autres messages. - n'est pas obligatoire. -c -> s - - LKJDLAKSJBFLKASN - Paul - Bonjour - - - - - - - -s -> c - - ok|pas ok - -