chat-reseau-p8/protocole.md

4.1 KiB
Raw Blame History

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 dutilisateur ne peut contenir que des caractères alphanumériques (a-z, A-Z, 0-9).

Connexion au serveur

Gestion de larrivée des utilisateurs sur le serveur (choix du nom dutilisateur et notification des clients).

Requête 1.1

Connexion sans nom dutilisateur fournit par le client, <version> devant être remplacé par la version utilisée par le client (tel que 0.5 ou 1.0). Client vers serveur.

PROT <version> CONNECT NEW

Requête 1.2

Connexion au serveur mentionnant le nom dutilisateur

PROT <version> CONNECT USER <username>

Selon si la connexion est établie avec ce nom d'utilisateur, la requête 1.4 ou la requête 1.5 sera renvoyée. Si la requête requête 1.5 est renvoyée, la 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.

PROT <version> REQ NAME

Requête 1.4

Réponse à la requête du serveur (client vers serveur), envoi du nom dutilisateur.

PROT <version> NAME <username>

Requête 1.5

Réponse du serveur si l'enregistrement du nom d'utilisateur sest bien déroulé (serveur vers client)

PROT <version> 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 requête 1.2 est envoyée vers le client.

PROT <version> FAILURE

Requête 1.7

Conjointement à la requête 1.4, cette requête sera envoyée à tout autre client connecté pour les notifier de la connexion dun nouvel utilisateur.

JOIN <username>

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

PROT <version> BYE

Requête 2.2

Envoi du serveur vers chaque client de la notification de déconnexion d'un client

PROT <version> LOGOUT <username>

Ping

Vérification de la connexion des clients avec le serveur. Chaque minute, la requête requête 3.1 est envoyée à chaque client qui ont tous trois secondes pour répondre avec la requête 3.2.

Requête 3.1

Envoi dun ping du serveur vers chaque client.

PROT <version> PING

Requête 3.2

Envoi de la réponse du client au serveur pour la requête 3.1

PROT <version> PONG

Échange de messages

Échange de messages publics

Requête 4.1.1

Envoi depuis le client vers le serveur dun message public

PROT <version> MSG <message>

Requête 4.1.2

Transmission dun message dun client vers les autres clients

PROT <version> FROM <username> MSG <message>

Échange de messages privés

Requête 4.2.1

Transmission dun message dun client vers un autre client uniquement, spécifié par son nom dutilisateur (client vers serveur)

PROT <version> PRIV TO <dest-username> MSG <msg>

Requête 4.2.2

Transmission dun message dun client vers un autre client uniquement, spécifié par son nom dutilisateur (serveur vers client)

PROT <version> PRIV FROM <username> MSG <message>

Messages privés

Requête 4.2.1

Transmission dun message dun client vers un autre client uniquement, spécifié par son nom dutilisateur (client vers serveur)

PROT <version> PRIV TO <dest-username> MSG <msg>

Requête 4.2.2

Transmission dun message dun client vers un autre client uniquement, spécifié par son nom dutilisateur (serveur vers client)

PROT <version> PRIV FROM <username> MSG <message>