SSE Inleiding
SSE staat voor Server-Sent Events, wat letterlijk betekent dat de server informatie naar de client stuurt. SSE is een eenrichtingskanaal,De server kan alleen informatie naar de client sturenDe client kan het SSE-verzoek pas ontvangen nadat het de eerste keer is geactiveerd en kan niet reageren.
Belangrijke kenmerken van SSE zijn onder andere:
- Gebruiksgemak: SSE gebruikt tekstgebaseerde dataformaten zoals platte tekst, JSON, enzovoort, waardoor het relatief eenvoudig is om data te verzenden en te parsen.
- Eenrichtingscommunicatie: SSE ondersteunt eenrichtingscommunicatie tussen de server en de client, waarbij de server actief data naar de client kan sturen, terwijl de client alleen de data kan ontvangen.
- Real-time: SSE legt langdurige verbindingen tot stand, waardoor servers data in realtime naar clients kunnen sturen zonder frequente verzoeken.
SSE vs. WebSocket
WebSocket is een andere webtechnologie die wordt gebruikt om realtime tweerichtingscommunicatie mogelijk te maken, wat op sommige punten verschilt van SSE. Hier is een vergelijking tussen SSE en WebSocket:
- Data push-richting: SSE is een eenrichtingscommunicatie tussen de server en de client, en de server kan actief data naar de client sturen. WebSocket daarentegen is bidirectionele communicatie, waardoor realtime tweerichtingsdata-uitwisseling tussen de server en de client mogelijk is.
- Verbindingsopbouw: SSE gebruikt lange HTTP-gebaseerde verbindingen om verbindingen op te bouwen via gewone HTTP-verzoeken en -antwoorden, waardoor realtime data push. WebSockets gebruiken aangepaste protocollen om tweerichtingscommunicatie mogelijk te maken door WebSocket-verbindingen tot stand te brengen.
- Compatibiliteit: Omdat SSE gebaseerd is op het HTTP-protocol, kan het in de meeste moderne browsers worden gebruikt en zijn er geen extra protocol-upgrades nodig. WebSockets worden ook ondersteund in de overgrote meerderheid van moderne browsers, maar kunnen problematisch zijn in sommige speciale netwerkomgevingen.
- Toepasselijke scenario's: SSE is geschikt voor situaties waarin de server data realtime naar de client stuurt, zoals aandelenkoersupdates, nieuws-realtime push, enzovoort. WebSocket is geschikt voor scenario's die realtime tweerichtingscommunicatie vereisen, zoals chatapplicaties en meerpersoons samenwerkende bewerking.
- Afhankelijk van je specifieke zakelijke behoeften en scenario's hangt het kiezen van SSE of WebSocket af van je daadwerkelijke behoeften. Als je alleen een server nodig hebt om data in één richting naar clients te sturen en het simpel en compatibel wilt houden, is SSE een goede keuze. Als je tweerichtingscommunicatie wilt bereiken, of als je geavanceerdere functies en controle wilt, dan is WebSocket misschien beter bij jouw behoeften.
SSE event stream-formaat
Een gebeurtenisstroom is een eenvoudige stroom van tekstgegevens die in UTF-8-formaat gecodeerd moet worden. EvenementenstroomHet bericht wordt gescheiden door een paar regelafbrekingen。 Gedragsopmerkingen die beginnen met een dubbele punt worden genegeerd. Elk veld wordt weergegeven door een veldnaam, gevolgd door een dubbele punt, en vervolgens tekstgegevens voor de waarde van dat veld.
De velden zijn als volgt:
gebeurtenis: Een string die wordt gebruikt om het gebeurtenistype te identificeren. Als deze string wordt opgegeven, stuurt de browser een event met de opgegeven gebeurtenisnaam naar de juiste listener; De client moet addEventListener() gebruiken om te luisteren naar het opgegeven evenement. Als een bericht geen gebeurtenisnaam specificeert, kan de onmessage-handler worden aangeroepen.
gegevens: Het gegevensveld van het bericht. Wanneer de EventSource meerdere opeenvolgende regels ontvangt die beginnen met data:, wordt deze gekoppeld en een regelbreuk tussen hen geplaatst. De regelafbreking aan het einde is verwijderd.
legitimatiebewijs: Event ID, die de eigenschapswaarde wordt van de interne eigenschap "Last Event ID" van het huidige EventSource-object.
Opnieuw: het moment om weer contact te maken. Als de verbinding met de server wordt verbroken, wacht de browser de aangegeven tijd en probeert vervolgens opnieuw verbinding te maken. Dit moet een geheel getal zijn dat de tijd aangeeft om opnieuw te verbinden in milliseconden. Als een niet-gehele getal wordt gespecificeerd, wordt het veld genegeerd.
EventSource-instantie
De EventSource-interface is de interface tussen de webinhoud en de server om gebeurtenissen te verzenden.
EventHandler-eigenschap
EventSource.onopen wordt aangeroepen wanneer de verbinding open is. EventSource.onmessage wordt aangeroepen wanneer een bericht wordt ontvangen zonder een gebeurtenisattribuut. EventSource.onerror wordt aangeroepen bij verbindingsuitzonderingen.
SSE Server (ASP.NET Core)
Maak een nieuw ASP.NET Core-project aan met .NET 8 en de controllercode is als volgt:
Voor de client die de verbinding tot stand brengt, stuur je elke tweede interval een bericht naar de client.
SSE-client
Schrijf clientcode in de View-pagina met html en js als volgt:
Begin het project met de volgende effecten:
Referentie:
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar. |