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