-
Quand on crée une application web en temps réel, on pense généralement aux WebSockets, mais les SSE peuvent aussi être une alternative simple
-
Problèmes des WebSockets : comme ils ne sont pas basés sur HTTP, ils ne bénéficient pas des avantages de HTTP
→ pas de compression, prise en charge limitée du multiplexage HTTP/2, non pris en charge par les proxys, possibilité de détournement
- Server-Sent Events (SSE)
→ fonctionnalité permettant au serveur d’envoyer au client des événements push à faible latence
→ standard HTML et pris en charge par tous les navigateurs (sauf IE)
→ contrairement aux WebSockets, les SSE fonctionnent dans un seul sens, du serveur vers le client (donc inadaptés aux jeux nécessitant une communication bidirectionnelle)
→ fonctionnent au-dessus de HTTP et ne nécessitent aucun protocole distinct
5 commentaires
Dans les environnements avec Load Balancer ou Proxy, la prise en charge de SSE est souvent insuffisante. (+ pare-feu d’entreprise)
Si vous envisagez des environnements comme Cloudflare, AWS CLB, etc., vous devriez vérifier une nouvelle fois avant d’adopter SSE.
Il est aussi parfois utilisé comme transport pour les subscriptions GraphQL à la place de WebSocket.
Implémentation d’un gestionnaire GraphQL SSE : https://github.com/enisdenjo/graphql-sse
Exemple d’utilisation de SSE comme transport de subscription : https://www.graphql-yoga.com/docs/features/subscriptions
Cela peut être une alternative lorsqu’il est difficile d’implémenter des WebSockets dans des environnements particuliers comme Deno Deploy ou Lambda. :-)
J’ai moi aussi découvert les SSE pour la première fois récemment en regardant un exemple de chat sur Deno Deploy.
https://github.com/lucacasonato/deploy_chat
Je ne savais pas que ça existait. J’apprends quelque chose
Consultez aussi les commentaires de cet article ainsi que ceux sur HN.
Il y a beaucoup d’avis variés, entre ceux qui utilisent SSE, ceux qui ont migré depuis WebSocket, et ceux qui sont passés à SSE avant de revenir à WebSocket.
https://news.ycombinator.com/item?id=30312897
En réalité, l’article met beaucoup en avant les avantages de SSE, mais cela reste surtout utile dans des scénarios particuliers.
Ces derniers temps, il existe aussi davantage de bibliothèques côté WebSocket, ce qui a simplifié l’implémentation.
Certains défendent aussi cette idée.