SSE Introduction
SSE signifie Événements envoyés par le serveur (Server-Envoyed Events), ce qui signifie littéralement que le serveur envoie des informations au client. SSE est un canal à sens unique,Le serveur ne peut envoyer d’informations qu’au clientLe client ne peut recevoir la requête SSE qu’après avoir déclenché la première fois, et ne peut pas répondre.
Les principales caractéristiques de la SSE incluent :
- Facilité d’utilisation : SSE utilise des formats de données textuels tels que le texte brut, le JSON, etc., ce qui rend relativement simple l’envoi et l’analyse des données.
- Communication unidirectionnelle : SSE supporte la communication unidirectionnelle entre le serveur et le client, où le serveur peut activement envoyer des données au client, tandis que le client ne peut recevoir que les données.
- Temps réel : SSE établit des connexions à long terme, permettant aux serveurs d’envoyer des données aux clients en temps réel sans requêtes fréquentes.
SSE vs. WebSocket
WebSocket est une autre technologie web utilisée pour permettre une communication bidirectionnelle en temps réel, qui diffère de SSE à certains égards. Voici une comparaison entre SSE et WebSocket :
- Direction de la poussée des données : Le SSE est une communication unidirectionnelle entre le serveur et le client, et le serveur peut activement envoyer des données au client. WebSocket, en revanche, est une communication bidirectionnelle, permettant un échange de données bidirectionnel en temps réel entre le serveur et le client.
- Établissement de connexion : SSE utilise de longues connexions basées sur HTTP pour établir des connexions via des requêtes HTTP et réponses ordinaires, ce qui permet un envoi de données en temps réel. Les WebSockets utilisent des protocoles personnalisés pour permettre une communication bidirectionnelle en établissant des connexions WebSocket.
- Compatibilité : Puisque SSE est basé sur le protocole HTTP, il peut être utilisé dans la plupart des navigateurs modernes et ne nécessite pas de mises à jour supplémentaires du protocole. Les WebSockets sont également pris en charge dans la grande majorité des navigateurs modernes, mais ils peuvent poser problème dans certains environnements réseau spécifiques.
- Scénarios applicables : SSE convient aux scénarios où le serveur envoie des données au client en temps réel, comme des mises à jour sur les cours des actions, des actualités en temps réel, etc. WebSocket convient aux situations nécessitant une communication bidirectionnelle en temps réel, telles que les applications de chat et l’édition collaborative multi-personnes.
- Selon les besoins et scénarios spécifiques de votre entreprise, choisir SSE ou WebSocket dépend de vos besoins réels. Si vous n’avez besoin que d’un serveur pour envoyer les données aux clients dans une seule direction et que vous souhaitez que ce soit simple et compatible, SSE est un bon choix. Si vous souhaitez obtenir une communication bidirectionnelle, ou si vous avez besoin de fonctionnalités et de contrôles plus avancés, alors WebSocket pourrait mieux répondre à vos besoins.
Format de flux d’événements SSE
Un flux d’événements est un flux simple de données textuelles qui doit être encodé au format UTF-8. Diffusion de l’événementLe message est séparé par une paire de sauts de ligne。 Les lignes de commentaires comportementaux qui commencent par un deux-points sont ignorées. Chaque champ est représenté par un nom de champ, suivi d’un deux-points, puis des données textuelles pour la valeur de ce champ.
Les champs sont les suivants :
événement: Une chaîne utilisée pour identifier le type d’événement. Si cette chaîne est spécifiée, le navigateur envoie un événement avec le nom d’événement spécifié à l’écouteur approprié ; Le client doit utiliser addEventListener() pour écouter l’événement spécifié. Si un message ne spécifie pas de nom d’événement, alors le gestionnaire onmessage peut être appelé.
données: Le champ de données du message. Lorsque l’EventSource reçoit plusieurs lignes consécutives commençant par data :, il les concaténe, insérant un saut de ligne entre elles. La coupure de ligne à l’extrémité est retirée.
id: Event ID, qui devient la valeur de propriété interne de l’objet EventSource actuel « Last Event ID ».
réessayer: le temps de se reconnecter. Si la connexion au serveur est perdue, le navigateur attendra le temps indiqué puis tentera de se reconnecter. Il doit s’agir d’un entier qui spécifie le temps de reconnexion en millisecondes. Si une valeur non entière est spécifiée, le champ est ignoré.
Instance EventSource
L’interface EventSource est l’interface entre le contenu web et le serveur pour envoyer les événements.
Propriété EventHandler
EventSource.onopen est appelé lorsque la connexion est ouverte. EventSource.onmessage est appelé lorsqu’un message est reçu sans attribut d’événement. EventSource.onerror est appelé sur les exceptions de connexion.
Serveur SSE (ASP.NET Core)
Créez un nouveau projet ASP.NET Core avec .NET 8 et le code du contrôleur est le suivant :
Pour le client qui établit le lien, envoyez un message au client tous les deux intervalles.
Client SSE
Écrivez le code client dans la page View en utilisant du html et du js comme suit :
Commencez le projet avec les effets suivants :
Référence:
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible. |