Aller au contenu

Server-Sent Events

Les Server-Sent Events transmettent du texte du serveur au client par HTTP, par exemple sur l’avancement d’une tâche en arrière-plan.

Également appeléSSE
API et contrats de données

Les Server-Sent Events, ou SSE, transmettent des notifications textuelles du serveur au client par une connexion HTTP. Dans le navigateur, EventSource fournit l’interface ; le flux utilise text/event-stream. La connexion est à sens unique. Les commandes du client vers le serveur nécessitent un autre chemin, comme des requêtes HTTP ordinaires.

Une notification sur un rapport en cours

Un portail fictif reçoit ce bloc d’événement :

id: evt-12
event: job-status
data: {"jobId":"J-52","status":"running"}

La ligne vide termine le bloc. L’identifiant, le type d’événement et les données ont des rôles différents. Ici, le serveur signale une création en cours ; le message ne signifie pas que le fichier est prêt. Les valeurs des champs sont notre propre exemple.

Après une coupure temporaire, EventSource peut se reconnecter automatiquement. Un identifiant d’événement précédemment défini et non vide est signalé par Last-Event-ID. Le serveur doit décider s’il fournit à nouveau les notifications manquantes et de quelle manière. L’identifiant ne crée pas d’historique d’événements stocké.

L’application doit donc gérer les doublons et un historique devenu indisponible, par exemple en relisant l’état actuel du travail. SSE ne garantit pas qu’une action métier soit exécutée exactement une fois. L’accès au projet et au travail doit aussi être contrôlé à la connexion et lors de l’envoi des notifications.

Sources

Articles sur le sujet

Votre projet avec ASES

Décrivez-nous votre projet. Nous revenons vers vous avec une première évaluation.