X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=doc%2Fprotocole.txt;fp=doc%2Fprotocole.txt;h=2ae4681cc9f7fa3fd6b202a030b863fb8c0ad33c;hb=35f69bce3bd696c6830b358933e1992a3df6a7df;hp=0000000000000000000000000000000000000000;hpb=852bcff06a2ecf2de9bb333320786a9441dce1fb;p=euphorik.git diff --git a/doc/protocole.txt b/doc/protocole.txt new file mode 100755 index 0000000..2ae4681 --- /dev/null +++ b/doc/protocole.txt @@ -0,0 +1,203 @@ +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 + +