Remplacer les Websocket par du SSE
Catégories
Mercure JavaScriptDans cette article nous allons voir pourquoi le Serveur Send Event (SSE) est préférable au Websocket dans certaines situations.
Les Websocket
Les WebSockets permettent d'établir un lien full-duplex sur une seule connexion TCP, facilitant ainsi une communication bidirectionnelle entre le client et le serveur. Cette technologie est particulièrement adaptée aux applications nécessitant des mises à jour en temps réel, comme les jeux en ligne, les discussions en direct ou les plateformes de trading.
Le SSE
Server-Sent Events (SSE) est une technologie qui permet au serveur de pousser des mises à jour vers le navigateur via une connexion HTTP standard. Contrairement aux WebSockets, le SSE est conçu pour des communications unidirectionnelles, du serveur vers le client. Cela le rend idéal pour des cas d'utilisation tels que les notifications ou les mises à jour de données en temps réel.
Un exemple courant où l'utilisation de SSE est pertinente est une page web affichant des données qui doivent se mettre à jour automatiquement à l'écran de l'utilisateur chaque fois qu'une action se produit sur le backend de l'application.
Pourquoi utiliser le SSE au lieu du Websocket
Cela va dépendre de vote besoin. Si vous avez besoin d'une communication bidirectionnel et complexe penchez-vous sur les Websocket. Dans le cas contraire le SSE est surement plus adapté.
WebSockets | SSE |
---|---|
Bidirectionnelle | Unidirectionnelle |
Plus complexe à mettre en œuvre | Plus simple à utiliser |
Plus gourmand en ressources | Plus léger |
Utilisation du SSE
Pour utiliser le SSE il nous faut un serveur pour envoyer les événement. Pour cela je vous recommande d'utiliser Mercure
développé par la Symfony Corp.
voici un exmple d'utilisation.
const eventSource = new EventSource('https://serverMercure/topic');
eventSource.onmessage = function(event) {
console.log('Données reçues:', JSON.parse(event.data));
};
eventSource.onerror = function(error) {
console.error('Erreur SSE', error);
};
Conclusion
En conclusion, les WebSockets et les Server-Sent Events (SSE) sont deux technologies distinctes, chacune répondant à des besoins spécifiques en matière de communication entre client et serveur. Les WebSockets sont idéaux pour des interactions bidirectionnelles et des mises à jour instantanées, ce qui en fait un choix privilégié pour les applications interactives en temps réel. En revanche, le SSE, avec sa communication unidirectionnelle, est particulièrement adapté aux scénarios où le serveur doit envoyer des mises à jour en temps réel au client, comme dans le cas des notifications ou des mises à jour de données dynamiques (graphiques de stats par exemple). Le choix entre ces deux technologies dépend donc des exigences spécifiques de l'application et du type de communication nécessaire.