10 Doc Chat Server
Audric SABATIER edited this page 2 years ago
This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Technologies utilisées

Protocole Websocket

Présentation générale :

Websocket est une technologie qui permet douvrir de façon permanente un canal de communication bidirectionnel (full-duplex) entre un client et un serveur. Cette technologie repose sur le protocole TCP qui soccupe du transport des données.

Fonctionnement :

Avec le protocole WebSocket, il suffit au client détablir la connexion avec un serveur Web. La connexion entre le client et le serveur sétablit grâce à la phase de handshake du protocole WebSocket. Dans ce cas, le client envoie toutes les identifications nécessaires à léchange de données au serveur.

Une fois établi, le canal de communication reste semi-ouvert. Le serveur peut sactiver de lui-même et transmettre au client toutes les informations sans que le client ne les demande. Si de nouvelles informations sont disponibles sur le serveur, le serveur les communique au client sans que celui-ci nait à émettre de requête.

WS_vs_HTTP

Problèmes :

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 larchitecture 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 à dautres clients. Les clients ne communiquent pas directement entre eux, mais par lintermé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 nenvoie des informations aux abonnés que quand il reçoit de nouvelles données.

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 :

  • Consommation d'énergie basse
  • Bande passante minimale
  • Sécurité et la qualité de service (QoS)

Schéma du service de chat :

MQTT

Un topic sera sous la forme messages/User1-User2. Un client s'abonnera aux topics comportants son nom d'utilisateur. Il recevra donc les données que l'autre utilisateur aura publié sur ce topic via l'intermédiaire du Broker.

Notifications :

soon...