6449cd9b41fa20085bd809af9275f6b32b00dbb0
[euphorik.git] / doc / protocole2.txt
1 Euphorik - minichat - Protocole v2\r
2 ----------------------------------\r
3 \r
4 A. Introduction\r
5 ---------------\r
6 \r
7 Ce document a pour but de décrire la communication client-serveur du site euphorik.\r
8 Ce document remplace 'protocole.txt' qui était la première version du protocol.\r
9 \r
10 B. Principe\r
11 -----------\r
12 \r
13 Enregistrement:\r
14 \r
15 Authentification:\r
16 \r
17 Rafraichissement:\r
18  * Le client envoie une demande au serveur avec l'id du dernier message (via XMLHttpRequest ou un function de JQuery)\r
19  * Le serveur maintient la connexion bloqué si le client est à jour.\r
20  * Dès qu'un nouveau message arrive, le serveurs débloque la connexion est envoie le ou les messages manquants.\r
21  
22 \r
23 C. Protocole\r
24 ------------\r
25 c : client\r
26 s : server\r
27 Chaque message est numéroté #<num>.\r
28 Les messages client vers serveur sont envoyé par HTTP-POST\r
29 \r
30 \r
31 C.1. Login\r
32 ----------\r
33 \r
34 c -> s\r
35 #1
36  <action name="login">
37    <login>Paul</login>
38    <password>IJKJDHHSAD9081238</password>
39  </action>
40 \r
41 ou\r
42 #2 (<login> et <password> peuvent être omis)
43  <action name="register">
44    <login>Paul</login>
45    <password>IJKJDHHSAD9081238</password>
46  </action>\r
47    \r
48 s -> c\r
49 #3 (<information> et <pseudo> pas obligatoire)\r
50  <reponse name="login">\r
51    <statut>enregistre|identifie|erreur</statut>\r
52    <cookie>LKJDLAKSJBFLKASN</cookie>\r
53    <id>7ZS</id> <!-- l'id est en base 36 -->\r
54    <pseudo>Paul</pseudo>
55    <login>paul49</login>
56    <email>paul@pierre.com</email>
57    <css>css/lite.css</css>\r
58    <information>blabla</information>\r
59  </reponse>\r
60  \r
61  \r
62 C.2. Logout\r
63 -----------\r
64 c -> s\r
65  <action name="logout">\r
66    <cookie>LKJDLAKSJBFLKASN</cookie> \r
67  </action>
68  
69 C.3. Profile
70 ------------
71 modification du profile, seul 'cookie' est obligatoire
72
73 c -> s
74  <action name="profile">
75    <cookie>LKJDLAKSJBFLKASN</cookie>
76    <login>paul49</login>
77    <password>IJKJDHHSAD9081238</password>
78    <pseudo>Paul</pseudo>
79    <email>paul@pierre.com</email>
80    <css>css/dark.css</css>
81  </action>
82  
83 s -> c
84  <reponse name="profile">
85    <statut>ok|pas ok</statut>
86    <information>balbla></information>
87  </reponse>\r
88 \r
89 \r
90 C.4. Attente evenement\r
91 ----------------------\r
92 \r
93 Si dernierMessageId est absent alors le client ne possède pas de message.\r
94 Page peut être omis, il a alors la valeur 1 (première page)\r
95 dernierMessageId est en base 36 (l'histoire de rigoler un peu)
96 \r
97 c -> s\r
98  <action name="attenteEvenement">
99   <cookie>LKJDLAKSJBFLKASN</cookie>\r
100   <dernierMessageId>6ZR</dernierMessageId>\r
101   <nombreMessage>10</nombreMessage>\r
102   <page>1</page>\r
103  </action>\r
104  \r
105 s -> c\r
106  <reponse name="attenteEvenement" evenement="nouveauxMessages">\r
107   <nbPage>4</nbPage> <!-- le nombre de page total -->
108   <message id="1F5">\r
109    <date>Hier 17:26:54</date>
110    <systeme></system> <!-- est-ce un message système ? -->\r
111    <proprietaire></proprietaire> <!-- est-ce que le message appartient à l'utilisateur courant ? "true" ou "false" -->\r
112    <repondu></repondu>  <!-- est-ce que l'utilisateur courant a répondu à ce message ? "true" ou "false" -->\r
113    <reponse></reponse> <!-- est-ce que c'est une réponse à un message de l'utilisateur courant ? "true" ou "false" -->\r
114    <pseudo>Paul</pseudo>
115    <login>paul_22</login>\r
116    <contenu>Salut</contenu>\r
117    <repondA>
118       <!-- id est l'id d'un message -->\r
119       <id id="DE2" pseudo="Pierre" login="pierre_45"> 
120       <!-- [..] -->\r
121    </repondA>\r
122   </message>\r
123   <!-- [..] -->\r
124  </reponse>\r
125  \r
126 ou\r
127  <reponse name="attenteEvenement" evenement="modificationMessage">\r
128  TODO\r
129  </reponse>\r
130 \r
131 ou\r
132  <reponse name="refreshMessages">\r
133   <erreur>raison</erreur>\r
134  </reponse>\r
135 \r
136 C.5. Envoie message\r
137 -------------------\r
138 \r
139 Un client envoie un message, le message peut répondre à un certain nombre d'autres messages.\r
140 <reponses> n'est pas obligatoire.\r
141 c -> s\r
142  <action name="message">\r
143   <cookie>LKJDLAKSJBFLKASN</cookie>\r
144   <pseudo>Paul</pseudo> <!-- il est possible que la personne change de pseudo -->\r
145   <contenu>Bonjour</contenu>\r
146   <reponses>\r
147    <reponse id="RT5" />\r
148    <reponse id="39K" />\r
149    <!-- [..] -->\r
150   </reponses>\r
151  </action>\r
152  \r
153 s -> c\r
154  <reponse name="message">\r
155    <statut>ok|pas ok</statut>\r
156  </reponse>\r
157  \r
158 \r
159 C.5. Envoie message\r
160 -------------------\r
161  \r