diff --git a/Doc-Chat-Server.md b/Doc-Chat-Server.md index 369cd15..90675a6 100644 --- a/Doc-Chat-Server.md +++ b/Doc-Chat-Server.md @@ -25,12 +25,47 @@ Forte utilisation de la batterie du téléphone ## Protocole MQTT : +### Fonctionnement : + MQTT est un protocole de messagerie push-subscribe basé sur le protocole TCP/IP. Dans l’architecture MQTT, il existe deux types de systèmes : les clients et les brokers. Le broker est le serveur avec lequel les clients communiquent. Il reçoit les communications des clients et les retransmet à d’autres clients. Les clients ne communiquent pas directement entre eux, mais par l’intermédiaire du broker. Chaque client peut être soit éditeur, soit abonné, soit les deux. MQTT est un protocole orienté événements. Afin de minimiser le nombre de transmissions, les données ne sont envoyées ni à intervalles définis, ni en continu. Un client publie uniquement quand il a des informations à transmettre, et un broker n’envoie des informations aux abonnés que quand il reçoit de nouvelles données. -### Problèmes : +#### Connexion : + +Le client envoie un message CONNECT contenant les informations nécessaires (nom d'utilisateur, mot de passe, identifiant du client...). Le broker répond par un message CONNACK, qui contient le résultat de la connexion (accepté, rejeté, etc.). + +#### Envoi de mesages : + +Le client utilise des messages PUBLISH, qui contiennent le sujet et la charge utile. Pour s'abonner et se désabonner, on utilise des messages SUBSCRIBE et UNSUSCRIBE, auxquels le serveur répond par SUBACK et UNSUBACK. + +#### Verification connexion active : + +Pour s'assurer que la connexion est active, les clients envoient périodiquement un message PINGREQ auquel le serveur répond par un PINGRESP. Enfin, le client se déconnecte en envoyant un message DISCONNECT. + + +#### Structure d'un message : + + +En-tête : 2 à 5 octets, code de contrôle, qui identifie le type de message envoyé, et de la longueur du message +Contenu (charge utile) : maximum de 256 Mo + +#### Qualité de service : + +Le protocole MQTT dispose d'un mécanisme de qualité de service (ou QoS), qui garantit la livraison des messages au client en cas de défaillance. Le protocole MQTT a trois niveaux de QoS possibles : + +* QoS 0 "At most once" : le message est envoyé une seule fois. En cas de défaillance, il se peut que certains ne soient pas livrés. + +* QoS 1 "At least once" : le message est envoyé jusqu'à ce que la livraison soit garantie. En cas d'échec, l'abonné peut recevoir des messages en double. + +* QoS 2 "Exactly once" : Chaque message est garanti d'être livré à l'abonné, et une seule fois. + +Logiquement, un niveau de QoS plus élevé nécessite un échange plus important de messages de vérification avec le client et, par conséquent, une charge plus importante sur le système. + +### Avantages : -Connexion avec le broker quand l'application est fermé, notification compliquées. +* Consommation d'énergie basse +* Bande passante minimale +* Sécurité et la qualité de service (QoS)