ADD Définition d'un nouveau protocole (version2)
[euphorik.git] / doc / protocole2.txt
diff --git a/doc/protocole2.txt b/doc/protocole2.txt
new file mode 100644 (file)
index 0000000..6449cd9
--- /dev/null
@@ -0,0 +1,161 @@
+Euphorik - minichat - Protocole v2\r
+----------------------------------\r
+\r
+A. Introduction\r
+---------------\r
+\r
+Ce document a pour but de décrire la communication client-serveur du site euphorik.\r
+Ce document remplace 'protocole.txt' qui était la première version du protocol.\r
+\r
+B. Principe\r
+-----------\r
+\r
+Enregistrement:\r
+\r
+Authentification:\r
+\r
+Rafraichissement:\r
+ * Le client envoie une demande au serveur avec l'id du dernier message (via XMLHttpRequest ou un function de JQuery)\r
+ * Le serveur maintient la connexion bloqué si le client est à jour.\r
+ * Dès qu'un nouveau message arrive, le serveurs débloque la connexion est envoie le ou les messages manquants.\r
+\r
+C. Protocole\r
+------------\r
+c : client\r
+s : server\r
+Chaque message est numéroté #<num>.\r
+Les messages client vers serveur sont envoyé par HTTP-POST\r
+\r
+\r
+C.1. Login\r
+----------\r
+\r
+c -> s\r
+#1
+ <action name="login">
+   <login>Paul</login>
+   <password>IJKJDHHSAD9081238</password>
+ </action>
+\r
+ou\r
+#2 (<login> et <password> peuvent être omis)
+ <action name="register">
+   <login>Paul</login>
+   <password>IJKJDHHSAD9081238</password>
+ </action>\r
+   \r
+s -> c\r
+#3 (<information> et <pseudo> pas obligatoire)\r
+ <reponse name="login">\r
+   <statut>enregistre|identifie|erreur</statut>\r
+   <cookie>LKJDLAKSJBFLKASN</cookie>\r
+   <id>7ZS</id> <!-- l'id est en base 36 -->\r
+   <pseudo>Paul</pseudo>
+   <login>paul49</login>
+   <email>paul@pierre.com</email>
+   <css>css/lite.css</css>\r
+   <information>blabla</information>\r
+ </reponse>\r
\r
\r
+C.2. Logout\r
+-----------\r
+c -> s\r
+ <action name="logout">\r
+   <cookie>LKJDLAKSJBFLKASN</cookie> \r
+ </action>
+C.3. Profile
+------------
+modification du profile, seul 'cookie' est obligatoire
+
+c -> s
+ <action name="profile">
+   <cookie>LKJDLAKSJBFLKASN</cookie>
+   <login>paul49</login>
+   <password>IJKJDHHSAD9081238</password>
+   <pseudo>Paul</pseudo>
+   <email>paul@pierre.com</email>
+   <css>css/dark.css</css>
+ </action>
+s -> c
+ <reponse name="profile">
+   <statut>ok|pas ok</statut>
+   <information>balbla></information>
+ </reponse>\r
+\r
+\r
+C.4. Attente evenement\r
+----------------------\r
+\r
+Si dernierMessageId est absent alors le client ne possède pas de message.\r
+Page peut être omis, il a alors la valeur 1 (première page)\r
+dernierMessageId est en base 36 (l'histoire de rigoler un peu)
+\r
+c -> s\r
+ <action name="attenteEvenement">
+  <cookie>LKJDLAKSJBFLKASN</cookie>\r
+  <dernierMessageId>6ZR</dernierMessageId>\r
+  <nombreMessage>10</nombreMessage>\r
+  <page>1</page>\r
+ </action>\r
\r
+s -> c\r
+ <reponse name="attenteEvenement" evenement="nouveauxMessages">\r
+  <nbPage>4</nbPage> <!-- le nombre de page total -->
+  <message id="1F5">\r
+   <date>Hier 17:26:54</date>
+   <systeme></system> <!-- est-ce un message système ? -->\r
+   <proprietaire></proprietaire> <!-- est-ce que le message appartient à l'utilisateur courant ? "true" ou "false" -->\r
+   <repondu></repondu>  <!-- est-ce que l'utilisateur courant a répondu à ce message ? "true" ou "false" -->\r
+   <reponse></reponse> <!-- est-ce que c'est une réponse à un message de l'utilisateur courant ? "true" ou "false" -->\r
+   <pseudo>Paul</pseudo>
+   <login>paul_22</login>\r
+   <contenu>Salut</contenu>\r
+   <repondA>
+      <!-- id est l'id d'un message -->\r
+      <id id="DE2" pseudo="Pierre" login="pierre_45"> 
+      <!-- [..] -->\r
+   </repondA>\r
+  </message>\r
+  <!-- [..] -->\r
+ </reponse>\r
\r
+ou\r
+ <reponse name="attenteEvenement" evenement="modificationMessage">\r
+ TODO\r
+ </reponse>\r
+\r
+ou\r
+ <reponse name="refreshMessages">\r
+  <erreur>raison</erreur>\r
+ </reponse>\r
+\r
+C.5. Envoie message\r
+-------------------\r
+\r
+Un client envoie un message, le message peut répondre à un certain nombre d'autres messages.\r
+<reponses> n'est pas obligatoire.\r
+c -> s\r
+ <action name="message">\r
+  <cookie>LKJDLAKSJBFLKASN</cookie>\r
+  <pseudo>Paul</pseudo> <!-- il est possible que la personne change de pseudo -->\r
+  <contenu>Bonjour</contenu>\r
+  <reponses>\r
+   <reponse id="RT5" />\r
+   <reponse id="39K" />\r
+   <!-- [..] -->\r
+  </reponses>\r
+ </action>\r
\r
+s -> c\r
+ <reponse name="message">\r
+   <statut>ok|pas ok</statut>\r
+ </reponse>\r
\r
+\r
+C.5. Envoie message\r
+-------------------\r
\r