Aller au contenu

Server-Sent Events : Définition

Qu'est-ce que Server-Sent Events (SSE), quelle est cette technologie de serveur push via une communication HTTP ? Notre Kesaco est là pour vous aider !

Kesaco : Sever-Sent Events

Imaginez que vous êtes en train de cuisiner une quiche. Pour gagner du temps, vous lancez en parallèle la cuisson des légumes et la cuisson à blanc du fond de tarte. Pendant que vous préparez votre appareil à quiche, vous êtes alerté quand les légumes sont parfaitement cuits ou quand il faut sortir la pâte du four, sans devoir vous interrompre régulièrement pour vérifier la cuisson.

C’est la promesse de l’approche SSE : les données arrivent au client à l’initiative du serveur.

Qu’est-ce que Server-Sent Events ?

Server-Sent Events, connu pour les intimes sous l'acronyme « SSE », est une technologie standardisée conçue pour émettre des données à l’initiative du serveur vers un client via le protocole HTTP.

SSE est une norme qui décrit comment les serveurs peuvent transmettre des données vers le client. Elle permet d’améliorer le support du streaming grâce à l’API native JavaScript appelée EventSource.

Cette méthode est plus élégante que le client polling : avec SSE, le client s’abonne, et c’est le serveur qui pousse l’information. Le client n’a donc pas besoin d’interroger le serveur toutes les X secondes pour détecter un changement.

SSE permet de limiter le nombre d’ouvertures de connexions : avec une seule connexion, il est possible de transmettre plusieurs informations distinctes.

La technologie SSE utilise le protocole HTTP, plus léger que WebSocket. L’API native EventSource évite de recourir à des librairies supplémentaires comme Socket.io pour faire du temps réel.

Les points forts de Server-Sent Events ?

  • Simple et efficace : SSE met en œuvre une communication unidirectionnelle du serveur vers le client de manière élégante.
  • Compatibilité réseau : SSE repose sur HTTP, et peut traverser des infrastructures complexes comportant des gateways, des proxys et des pare-feu.
  • Reconnexion automatique : L’API EventSource se reconnecte automatiquement au serveur en cas d’interruption.
  • Événements typés : SSE permet d’ajouter un type aux événements, ce qui facilite les mises à jour côté client.

Les limitations de Server-Sent Events ?

  • Adapté au texte : La norme utilisée permet de transférer du texte, mais ne prend pas en charge les données binaires. Ce problème peut être contourné en transmettant un lien de téléchargement.
  • Surcharge des serveurs : Chaque client abonné maintient une connexion ouverte. Un trop grand nombre de clients simultanés peut saturer le serveur.
  • Scalabilité : Pour gérer la montée en charge, une architecture plus complexe est nécessaire. En environnement multi-nœud, on peut envisager des solutions avec un broker externe comme Kafka ou RabbitMQ, et un message en mode broadcast pour notifier tous les clients, ou bien des affinités de session au niveau du load balancer afin de regrouper les clients par type d’abonnement sur un même serveur.

Quand mettre en place Server-Sent Events ?

Voici quelques cas d’usage adaptés au SSE :

  • Dashboard dynamique : Mettre à jour un graphique ou un tableau en temps réel sans recharger la page, utile par exemple dans une application de surveillance.
  • Alertes et notifications : Recevoir des alertes en direct lors d’événements (ex. accident sur la route, modification d’un document de type wiki par un collègue).
  • Actualité en temps réel : Afficher les derniers posts d’un flux RSS ou les résultats d’une recherche sur un réseau social.
  • Notification de tâche terminée : Indiquer la fin d’un traitement asynchrone, comme un rendu d’image.
  • Suivi d’un workflow : Suivre un traitement long découpé en plusieurs étapes, comme un processus de publication automatisé : « Vérification d’orthographe », « Création des métadonnées », « Publication du document », « Envoi d’une notification aux abonnés ».

Conclusion

Server-Sent Events (SSE) est une solution simple et élégante pour transmettre des données en temps réel du serveur vers le client. Elle est idéale pour des applications nécessitant des mises à jour fréquentes et légères, comme les notifications ou les flux d’actualités.

Grâce à l’utilisation du protocole HTTP et à l’API native EventSource de JavaScript, SSE peut facilement s’intégrer dans un environnement réseau complexe.

Ses limitations doivent être prises en compte dès la conception pour relever les défis d’architecture et rester performant lors des pics de charge. SSE peut se révéler très puissant, à condition de bien comprendre ses forces et de ne pas sous-estimer ses faiblesses.

Dernier