From cebf82f2bdc28496f1ac5ce2970d03517374efa6 Mon Sep 17 00:00:00 2001 From: Phuntsok Drak-pa Date: Mon, 26 Feb 2018 12:30:34 +0100 Subject: [PATCH] Proposition de protocole --- protocole.md | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 protocole.md diff --git a/protocole.md b/protocole.md new file mode 100644 index 0000000..608fc7e --- /dev/null +++ b/protocole.md @@ -0,0 +1,174 @@ +[WARNING] Deprecated: markdown_github. Use gfm instead. +Proposition de protocole +======================== + +Proposition de protocole pour la communication inter-serveurs/clients +pour le projet de chat textuel. + +Quelques règles pour assurer le bon fonctionnement du protocole : + +- Chaque ligne se termine par les caractères `\r\n`. +- Un nom d’utilisateur ne peut contenir que des caractères + alphanumériques (a-z, A-Z, 0-9). + +Connexion au serveur +-------------------- + +Gestion de l’arrivée des utilisateurs sur le serveur (choix du nom +d’utilisateur et notification des clients). + +### Requête 1.1 + +Connexion sans nom d’utilisateur fournit par le client, `` +devant être remplacé par la version utilisée par le cliet (tel que `0.5` +ou `1.0`). Client vers serveur. + +``` text +PROT CONNECT NEW +``` + +### Requête 1.2 + +Connexion au serveur mentionnant le nom d’utilisateur + +``` text +PROT CONNECT USER +``` + +Selon si la connexion est établie avec ce nom d'utilisateur, la +[1.1.4](#*Requête 1.4) ou [1.1.5](#*Requête 1.5) sera renvoyée. Si la +requête [1.1.5](#*Requête 1.5) est renvoyée, la [1.1.2](#*Requête 1.2) +suivra immédiatement après. + +### Requête 1.3 + +Réponse à cette requête du serveur vers le client (serveur vers client), +requête du nom d'utilisateur. + +``` text +PROT REQ NAME +``` + +### Requête 1.4 + +Réponse à la requête du serveur (client vers serveur), envoi du nom +d’utilisateur. + +``` text +PROT NAME +``` + +### Requête 1.5 + +Réponse du serveur si l'enregistrement du nom d'utilisateur s’est bien +déroulé (serveur vers client) + +``` text +PROT OK WELCOME +``` + +### Requête 1.6 + +Réponse du serveur si l'enregistrement du nom d'utilisateur a rencontré +une erreur (nom déjà utilisé,…) (serveur vers client). La +[1.1.2](#*Requête 1.2) est envoyée vers le client. + +``` text +PROT FAILURE +``` + +### Requête 1.7 + +Conjointement à la [1.1.4](#*Requête 1.4), cette requête sera envoyée à +tout autre client connecté pour les notifier de la connexion d’un nouvel +utilisateur. + +``` text +JOIN +``` + +Déconnexion du serveur +---------------------- + +Gestion du départ des utilisateurs du serveur + +### Requête 2.1 + +Envoi du client vers le serveur le notifiant de sa déconnexion + +``` text +PROT BYE +``` + +### Requête 2.2 + +Envoi du serveur vers chaque client de la notification de déconnexion +d'un client + +``` text +PROT LOGOUT +``` + +Ping +---- + +Vérification de la connexion des clients avec le serveur. Chaque minute, +la requête [1.3.1](#*Requête 3.1) est envoyée à chaque client qui ont +tous trois secondes pour répondre avec la [1.3.2](#*Requête 3.2). + +### Requête 3.1 + +Envoi d’un ping du serveur vers chaque client. + +``` text +PROT PING +``` + +### Requête 3.2 + +Envoi de la réponse du client au serveur pour la [1.3.1](#*Requête 3.1) + +``` text +PROT PONG +``` + +Échange de messages +------------------- + +### Messages publics + +#### Requête 4.1.1 + + Envoi depuis le client vers le serveur d’un message public + + ``` text + PROT MSG + ``` + +#### Requête 4.1.2 + + Transmission d’un message d’un client vers les autres clients + + ``` text + PROT FROM MSH + ``` + +### Messages privés + +#### Requête 4.2.1 + + Transmission d’un message d’un client vers un autre client + uniquement, spécifié par son nom d’utilisateur (client vers serveur) + + ``` text + PROT PRIV TO MSG + ``` + +#### Requête 4.2.2 + + Transmission d’un message d’un client vers un autre client + uniquement, spécifié par son nom d’utilisateur (serveur vers client) + + ``` text + PROT PRIV FROM MSG + ```