Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 4163|Antwoord: 4

[.NET Core] SSE (1) gebruikt ASP.NET Core als SSE-server

[Link kopiëren]
Geplaatst op 2024-4-5 11:54:12 | | | |
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.




Vorig:Een eenvoudige vergelijking van Garnet cache en Redis ontwikkeld met .NET
Volgend:JS luistert naar de ctrl + enter-toetscombinatie
 Huisbaas| Geplaatst op 5-4-2024 12:03:28 |
De standaard browser EventSource API legt enkele beperkingen op aan de soorten verzoeken die mogen worden gedaan: de enige parameter-urls die mogen worden doorgegeven zijn en withCredentials, dus:

Je kunt de verzoekbody niet doorgeven: je moet alle informatie die nodig is om het verzoek uit te voeren in de URL coderen, die in de meeste browsers beperkt is tot 2000 tekens.
Je kunt geen aangepaste request-headers doorgeven
Je kunt alleen een GET-verzoek doen - er kan geen andere methode worden gespecificeerd.
Als de verbinding wordt verbroken, heb je geen controle over het herkansingsbeleid: de browser probeert het stilletjes een paar keer voor je en stopt dan, wat niet goed genoeg is voor een robuuste applicatie.


fetch-event-source

De bibliotheek biedt een alternatieve interface gebaseerd op de Fetch API voor het gebruik van door de server verzonden gebeurtenissen. Het is volledig compatibel met het event stream-formaat, dus als je al een server hebt die deze events verzendt, kun je het gebruiken zoals voorheen. Je hebt nu echter meer controle over verzoeken en antwoorden

De hyperlink-login is zichtbaar.
Geplaatst op 14-11-2024 14:34:25 |
geleerd
 Huisbaas| Geplaatst op 25-12-2024 16:36:44 |
Kleine slak Geplaatst op 2024-4-5 12:03
De standaard browser EventSource API legt enkele beperkingen op aan de soorten verzoeken die zijn toegestaan: de enige parameter-url die mag worden ingevoerd is withCredentia ...

Compileer het NPM-pakket in een browserklaar JavaScript-script
https://www.itsvse.com/thread-10762-1-1.html
 Huisbaas| Geplaatst op 25-12-2024 16:48:45 |
SSE (2) fetch-event-source herverbinding probleem na het wisselen van browsertabbladen
https://www.itsvse.com/thread-10906-1-1.html
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com