SSE vs WebSocket : choisir le bon flux

SSE vs WebSocket

SSE vs WebSocket : quelle option temps réel choisir | We.Inc

Server-sent events vs WebSockets : EventSource et WebSocket côte à côte, reconnexion, données binaires, limites de connexions, une aide au choix et des serveurs Node minimaux pour les deux.

Les server-sent events diffusent du texte du serveur vers le navigateur via une réponse HTTP ordinaire, et l'API EventSource se reconnecte toute seule. Un WebSocket transforme la connexion en canal bidirectionnel qui transporte du texte ou du binaire dans les deux sens. Utilisez SSE pour les flux d'actualité, notifications et barres de progression ; utilisez les WebSockets quand le navigateur doit renvoyer des messages fréquents.

Côte à côte

Vous ne savez pas lequel il faut à votre fonctionnalité ? Cochez dans l'outil ci-dessous les affirmations qui s'y appliquent. Il suit les mêmes règles que le tableau ci-dessus et indique quelle API convient, et pourquoi.

Questions fréquentes

Le navigateur peut-il envoyer des données au serveur avec SSE ?

Pas sur le flux lui-même. Le flux d'événements ne circule que du serveur vers le client : le navigateur envoie donc ses messages avec des requêtes fetch ordinaires. Pour un trafic de type messagerie dans les deux sens, un WebSocket convient mieux.

Comment empêcher EventSource de se reconnecter ?

Appelez close() côté client. Côté serveur, le standard HTML indique qu'une réponse 204 No Content demande au client d'arrêter de se reconnecter.

Peut-on envoyer un en-tête Authorization avec EventSource ?

Non. Le constructeur ne prend qu'une URL et un objet d'options dont le seul réglage est withCredentials. Utilisez un cookie, un jeton de courte durée dans l'URL, ou un lecteur basé sur fetch si vous avez besoin d'en-têtes personnalisés.

SSE est-il dépassé maintenant que les WebSockets existent ?

Non. Le format text/event-stream reste un bon choix pour les flux à sens unique, car il passe par les serveurs HTTP, proxys et systèmes d'authentification habituels sans changement de protocole.

Lequel consomme le moins de ressources serveur ?

Les deux maintiennent une connexion de longue durée par client : la différence est donc faible. Ce qui compte davantage, c'est de savoir si votre hébergeur autorise les réponses de longue durée ou les upgrades de protocole : vérifiez d'abord ses limites de durée de requête.

Comment fonctionnent les server-sent events

Comment fonctionnent les WebSockets

Une règle simple

Server-sent events : code minimal

Serveur SSE en Node pur

Aucune bibliothèque nécessaire. La réponse reste ouverte ; chaque écriture est un événement, et la ligne de commentaire empêche les proxys inactifs de la fermer.

EventSource dans le navigateur

addEventListener utilise le nom d'événement du flux. La reconnexion se fait sans aucun code de votre part.

WebSocket : code minimal

Serveur WebSocket avec le package ws

Installez-le avec npm install ws. Il renvoie chaque message en majuscules au client qui l'a envoyé.

WebSocket dans le navigateur, avec une reconnexion simple

Contrairement à EventSource, rien ne se reconnecte pour vous : ce code attend un instant après close et ouvre un nouveau socket.

Le navigateur renvoie beaucoup de messages, plusieurs par seconde ou plus

Les données sont binaires, comme des morceaux audio ou des buffers d'état de jeu

Les clients doivent rattraper les événements manqués après une coupure de connexion

Le trafic passe par des proxys ou un hébergement qui ne gèrent que le HTTP simple

Les server-sent events conviennent. Rien de ce que vous avez coché n'exige un canal bidirectionnel, et EventSource vous offre la reconnexion et la reprise gratuitement.

Un WebSocket convient. Vous avez besoin de messages fréquents depuis le navigateur ou de données binaires, qu'un flux d'événements ne peut pas transporter.

Lequel convient à votre fonctionnalité ?

Cochez ce qui s'applique à votre fonctionnalité

Recommandation

Server-sent events

WebSocket

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site