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