Pourquoi les événements server-sent ont-ils été introduits dans HTML5?
sobes.tech IA
Réponse de l'IA
Les événements envoyés par le serveur (SSE) ont été introduits dans HTML5 pour transmettre des données du serveur au client dans une seule direction, en temps réel, via une connexion HTTP. Cela permet de recevoir des mises à jour du serveur sans que le client ait besoin d’envoyer constamment des requêtes (sondage). Les principaux avantages par rapport à d’autres technologies :
- Simplicité : Utilisent une connexion HTTP normale, ce qui facilite l’intégration avec les technologies et l’infrastructure web existantes.
- Efficacité : Permettent au serveur d’envoyer des données lorsqu’elles sont prêtes, réduisant la charge sur le réseau et le serveur par rapport à un sondage fréquent.
- Reconnexion automatique : Le navigateur tente automatiquement de rétablir la connexion en cas de rupture.
- Traitement intégré : L’API
EventSourcedans le navigateur offre une interface simple pour travailler avec des événements et des données.
Exemple d’utilisation côté client :
// Créer un nouvel objet EventSource, en indiquant l’URL du serveur pour SSE
const eventSource = new EventSource('/updates');
// Traiter l’événement 'message' - réception des données du serveur
eventSource.onmessage = function(event) {
// Afficher les données reçues dans la console
console.log('Nouvelles données du serveur :', event.data);
};
// Traiter les erreurs de connexion
eventSource.onerror = function(error) {
console.error('Une erreur est survenue :', error);
};
Sur le serveur, la réponse doit avoir le type MIME text/event-stream et être formatée comme suit :
data: C’est la première ligne de données\n
data: C’est la deuxième ligne\n\n
Chaque message se termine par deux caractères de saut de ligne (\n\n). Chaque ligne de données commence par data: . D’autres champs peuvent également exister, comme event: pour indiquer le type d’événement ou id: pour l’identifiant du message.
Les événements envoyés par le serveur sont un bon choix pour les scénarios où le serveur doit envoyer un flux de mises à jour au client, comme les notifications, les flux d’actualités, les cotations boursières ou les résultats de processus longs. Ils sont plus simples à mettre en œuvre que WebSockets pour une communication unidirectionnelle.