Table des matières
Que sont les événements de serveur?
Comment définir la prise en charge SSE côté serveur?
Des questions et des notes fréquemment posées
Quand dois-je utiliser SSE au lieu de WebSocket?
Maison interface Web Tutoriel H5 Recevoir des données en temps réel avec des événements (SSE) HTML5 Server-Sent (SSE).

Recevoir des données en temps réel avec des événements (SSE) HTML5 Server-Sent (SSE).

Jul 02, 2025 pm 04:46 PM
html5 sse

Les événements de serveur (SSE) sont une solution légère fournie par HTML5 pour pousser les mises à jour en temps réel du navigateur. Il réalise la communication à sens unique grâce à de longues connexions HTTP, qui conviennent au marché boursier, aux notifications et à d'autres scénarios. Lorsque vous l'utilisez, créez une instance Eventsource et écoutez les messages: const eventsource = new Eventsource ('/ stream'); eventsource.onMessage = fonction (événement) {console.log ('Message reçu:', event.data); }; Le serveur doit définir le type de contenu sur Text / Event-Stream, garder la connexion ouverte et sortir des données: Contenu \ N \ N dans le format. Les considérations courantes incluent: 1. Configurer CORS pour résoudre les problèmes de domaine croisé; 2. Contrôler le temps de réception pour obtenir une reconnexion automatique; 3. Utiliser l'événement: définir les types d'événements personnalisés; 4. Gérer le délai d'expiration de la connexion pour éviter les fuites des ressources. Par rapport à WebSocket, SSE est plus simple et plus facile à utiliser, prend en charge le protocole HTTP pour pénétrer le pare-feu, mais n'est qu'une communication unidirectionnelle et a une compatibilité légèrement mauvaise. Il convient aux scénarios de poussée en temps réel sans interactions fréquentes.

Recevoir des données en temps réel avec des événements (SSE) HTML5 Server-Sent (SSE).

Dans le développement Web, si vous devez pousser les mises à jour en temps réel du serveur vers le navigateur, HTML5 fournit une solution légère: les événements de serveur (SSE). Par rapport à WebSocket, il est plus simple et plus facile à mettre en œuvre, et est particulièrement adapté aux scénarios où seuls les serveurs doivent communiquer unidirectionnels aux clients.

Recevoir des données en temps réel avec des événements (SSE) HTML5 Server-Sent (SSE).

Que sont les événements de serveur?

Les événements envoyés par serveur font partie de HTML5, permettant aux serveurs de pousser les données au navigateur sur des connexions longues HTTP. Contrairement aux méthodes de sondage traditionnelles, SSE restera ouverte après avoir établi une connexion et le serveur peut envoyer de nouvelles données à tout moment, telles que des devis en bourse, des notifications en temps réel ou des messages de chat.

Recevoir des données en temps réel avec des événements (SSE) HTML5 Server-Sent (SSE).

Son utilisation de base est de créer une instance EventSource et de pointer une URL du côté serveur:

 const eventsource = new Eventsource ('/ stream');
eventsource.onMessage = fonction (événement) {
    console.log ('Message reçu:', event.data);
};

Tant que le serveur continue d'envoyer des données, le client peut continuer à les recevoir.

Recevoir des données en temps réel avec des événements (SSE) HTML5 Server-Sent (SSE).

Comment définir la prise en charge SSE côté serveur?

Différentes langues backend ont des méthodes de mise en œuvre différentes, mais le point central est le même: gardez la connexion ouverte et sort le contenu au format SSE.

Prenez Node.js Express comme exemple:

 app.get ('/ stream', (req, res) => {
    res.sethEader («Content-Type», «Text / Event-Stream»);
    res.sethEader («cache-control», «non-cache»);

    // simule l'envoi de données setinterval (() => {
        res.write (`data: $ {new Date ()} \ n \ n`);
    }, 1000);
});

Points clés:

  • Définissez l'en-tête de réponse correct, en particulier text/event-stream
  • Ne terminez pas la réponse trop tôt, gardez la connexion ouverte
  • Le format de données doit être data: 内容\n\n , et deux nouvelles lignes indiquent la fin d'un message

D'autres langues telles que Python (Flask), PHP ou Java Spring Boot peuvent être implémentées de manière similaire.


Des questions et des notes fréquemment posées

1. Problèmes de domaine inter-parmi Si le front-end et le back-end ne sont pas sous le même nom de domaine, les COR doivent être configurés pour s'assurer que la demande initiée EventSource est autorisée:

 Access-Control-Allow-Origin: *

Ou spécifiez un nom de domaine spécifique.

2. Mécanisme de reconnexion automatique Lorsque la connexion est interrompue, le navigateur essaie automatiquement de se reconnecter et le temps d'attente par défaut est de 3 secondes. Vous pouvez contrôler cet intervalle côté serveur:

 Réessayer: 5000

3. Type d'événement personnalisé En plus de la onmessage par défaut, vous pouvez également définir d'autres noms d'événements:

 Événement: mise à jour
Données: {"Type": "News", "Content": "New News arrive"}

Surveillance frontale:

 eventsource.addeventListener ('update', fonction (événement) {
    console.log ('Mise à jour reçue:', event.data);
});

4. Délai de connexion et version des ressources Faites attention de ne pas laisser la connexion pendre indéfiniment. Le serveur doit avoir des mécanismes pour détecter si le client est déconnecté et libérer des ressources à temps pour éviter la fuite de mémoire.


Quand dois-je utiliser SSE au lieu de WebSocket?

WebSocket est plus puissant et prend en charge la communication bidirectionnelle, mais a également une complexité plus élevée. Si vous n'avez besoin que du serveur pour pousser les informations vers le client et que vous n'avez pas besoin d'interactions fréquentes, SSE est un meilleur choix.

Les avantages comprennent:

  • Simplifiez le processus de développement, facile à mettre en œuvre à la fois avant et arrière
  • Prise en charge de la reconnexion automatique
  • Le protocole HTTP standard peut être utilisé pour faciliter la pénétration du pare-feu

Les inconvénients sont également évidents:

  • Une seule communication unidirectionnelle du serveur à client est prise en charge
  • La compatibilité du navigateur est légèrement médiocre (c'est-à-dire et les versions plus anciennes de Edge ne sont pas prises en charge)

Fondamentalement, c'est tout. SSE n'est pas compliqué, mais dans le déploiement réel, vous devez prêter attention à la gestion des connexions, à la gestion des erreurs et à l'optimisation des performances. Si vous voulez simplement créer un système de notification en temps réel simple, SSE est un choix léger et pratique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Qu'est-ce que les microdata? HTML5 a expliqué Qu'est-ce que les microdata? HTML5 a expliqué Jun 10, 2025 am 12:09 AM

MicrodataenhancesseSeoandContentDisplayInsearchResultsByembedDingsstructuredDataintOhtml.1) useItemScope, ItemType, anditempatatTTRributestoAdddsemityMeaning.2) APPLICTIONMICRODATATAKECTACTATHIL

HTML5 Microdata: les meilleurs outils en ligne HTML5 Microdata: les meilleurs outils en ligne Jun 09, 2025 am 12:06 AM

Thebestonlinetoolsforhtml5microdataareglestructureddatamarkuphelperandschema.org'smarkupvalidator.1) googlestructuredDatama RKUPHELPERRISUSER-FRIMBRE, GuidingUserstoaddmicrodatAtagsForrenhancedSeo.2) Schema.org'smarkupValidatorChecksmicrodatAmplementa

Microdata dans HTML5: la clé pour mieux le classement des moteurs de recherche Microdata dans HTML5: la clé pour mieux le classement des moteurs de recherche Jun 12, 2025 am 10:22 AM

Microdatasignificativement ImproveSeObyenHancingSearginInpreeding extention andrankingofwebpages.1) itAddsSeMantmeaningtoHtml, aidingbetterindexing.2) iTenablesRichsnippets, augmentation de cliquette.

Objectifs HTML5: un guide de démarrage rapide Objectifs HTML5: un guide de démarrage rapide May 18, 2025 am 12:18 AM

Html5aimStoimprovewebaccessibilité, efficacité et interactivité pourbothusers et développeurs.1)

Spécification HTML5: Explorer les principaux objectifs et motivations Spécification HTML5: Explorer les principaux objectifs et motivations May 16, 2025 am 12:19 AM

Thekeygoals et motivationsBehindhtml5weretoenhanceSmanticStructure, improvistimediasupport, antensurebetterperformance and compatibilitéaChtoSDevices, drivenytheneedtoaddresshtml4'slimitations etmeetModernwebdemands.1)

Quelles sont les principales fonctionnalités introduites dans HTML5? Quelles sont les principales fonctionnalités introduites dans HTML5? Jun 19, 2025 pm 11:57 PM

HTML5IntrocedyKeyFeureresthatTransformedWebDevelopment.1.SemantElementslike ,, and Improvedstructure, Liberabilité et accessibilité.2.NativeMultimediasupportViaAndTagseliminDerilienDeonPlugins.3.enhancedFormControlSeclulingTypeLelimedRede

Est-il difficile d'utiliser HTML5 pour atteindre ses objectifs? Est-il difficile d'utiliser HTML5 pour atteindre ses objectifs? May 16, 2025 am 12:06 AM

Html5isnotparticularlydifficulttousebutrequireSumber comprisetsfeatures.1) semanticlelements like ,,, andimprovestructure, littyable, référence et accessibilité.2) multimédiasupportViaAndeletsenhanceserexperienceswithoutpluts.3)

Gestion des reconnexions et des erreurs avec des événements de serveur HTML5. Gestion des reconnexions et des erreurs avec des événements de serveur HTML5. Jul 03, 2025 am 02:28 AM

Lorsque vous utilisez HTML5SSE, les méthodes pour gérer la reconnexion et les erreurs incluent: 1. Comprendre le mécanisme de reconnexion par défaut. Eventsource réessayer 3 secondes après l'interrompu de la connexion par défaut. Vous pouvez personnaliser l'intervalle via le champ de réessayer; 2. Écoutez l'événement d'erreur pour gérer les erreurs de défaillance de connexion ou d'analyse, distinguer les types d'erreurs et exécuter la logique correspondante, telles que les problèmes de réseau en s'appuyant sur la reconnexion automatique, les erreurs de serveur retardent manuellement la reconnexion et la défaillance de l'échec d'authentification Rafraîchissement du jeton; 3. Contrôlez activement la logique de reconnexion, telle que la fermeture et la reconstruction manuelle de la connexion, en définissant le nombre maximum de temps de réessayer, combinant Navigator.online pour juger l'état du réseau pour optimiser la stratégie de réessayer. Ces mesures peuvent améliorer la stabilité des applications et l'expérience utilisateur.

See all articles