WebSockets
Les WebSockets sont une technologie de communication bidirectionnelle en temps réel qui permet d'établir une connexion continue entre un client (navigateur web, application mobile) et un serveur. Contrairement au modèle classique de communication HTTP, où le client doit envoyer une requête pour obtenir une réponse du serveur, les WebSockets permettent au serveur d'envoyer des données au client à tout moment, sans attendre une requête.
Principe des WebSockets
Le fonctionnement des WebSockets repose sur les étapes suivantes :
- Ouverture de la connexion : Lorsqu'un client souhaite communiquer avec le serveur, il initie une connexion WebSocket. Cette connexion commence par une requête HTTP spéciale, appelée "handshake", qui passe ensuite à un protocole de communication WebSocket une fois établie.
- Communication bidirectionnelle : Une fois la connexion établie, les deux parties peuvent envoyer et recevoir des messages en temps réel. Contrairement aux requêtes HTTP classiques, il n'est pas nécessaire de rétablir la connexion pour chaque message, ce qui rend les WebSockets beaucoup plus performants pour les communications fréquentes.
- Fermeture de la connexion : Lorsque le client ou le serveur décide de terminer la communication, la connexion WebSocket est fermée proprement, libérant les ressources associées.
Fonctionnalités possibles avec les WebSockets
Les WebSockets offrent un large éventail de possibilités pour des applications interactives et en temps réel.
- Messagerie instantanée et chat en temps réel : Les WebSockets sont parfaits pour les applications de chat où les messages doivent être transmis et affichés instantanément aux utilisateurs.
- Notifications en temps réel : Les notifications push peuvent être envoyées par le serveur aux utilisateurs pour les informer d'événements importants (mises à jour, alertes, nouveaux messages, etc.).
- Jeux en ligne multijoueurs : Les jeux nécessitant une synchronisation rapide entre les actions des joueurs peuvent utiliser les WebSockets pour une communication efficace en temps réel.
- Tableaux de bord et monitoring : Les WebSockets permettent d'afficher en direct les données d'un serveur, comme les métriques système ou les statistiques d'utilisation, avec des mises à jour en continu.
- Collaborations en temps réel : Pour les applications de collaboration comme les éditeurs de texte partagés ou les outils de dessin en ligne, les WebSockets facilitent la synchronisation des modifications entre plusieurs utilisateurs.
- Streaming de données : Les WebSockets sont idéaux pour les flux de données en temps réel, tels que les cours de la bourse, les résultats sportifs, ou les données de capteurs IoT.
Avantages
- Communication efficace : Comme les connexions WebSocket restent ouvertes, il y a moins de surcharge par rapport aux requêtes HTTP répétées.
- Réactivité : Les messages peuvent être envoyés et reçus instantanément
- Économie de bande passante : Les données sont envoyées dans un format json
Exemples
- Un chat en direct sans utiliser de mécanismes comme Ajax. (Surcharge des requêtes + Latence)
- Notifications push
Streaming audio/vidéo avec WebSockets
Il est techniquement possible d'utiliser les WebSockets pour envoyer des flux, mais c'est pas optimisés. Les WebSockets n'offrent pas de mécanismes intégrés pour la compression ou l'encodage. temps de latence...
- WebRTC : solution la plus populaire pour le streaming audio et vidéo en temps réel. Il est conçu pour les communications peer-to-peer et offre une faible latence.
- HTTP Live Streaming (HLS) : HLS est un protocole de streaming développé par Apple,
- MPEG-DASH : divise le contenu en segments et permet la diffusion adaptative
- RTMP (Real-Time Messaging Protocol) : est un protocole traditionnellement utilisé pour le streaming en direct, notamment dans les plateformes de streaming comme YouTube ou Twitch