Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 4163|Svar: 4

[.NET Core] SSE (1) använder ASP.NET Core som SSE-server

[Kopiera länk]
Publicerad den 2024-4-5 11:54:12 | | | |
SSE-introduktion

SSE står för Server-Send-Events, vilket bokstavligen betyder att servern skickar information till klienten. SSE är en envägskanal,Servern kan endast skicka information till klientenKlienten kan bara ta emot SSE-förfrågan efter att ha triggat första gången och kan inte svara.



Nyckelfunktioner i SSE inkluderar:

  • Användarvänlighet: SSE använder textbaserade dataformat som ren text, JSON, etc., vilket gör det relativt enkelt att skicka och tolka data.
  • Envägskommunikation: SSE stödjer envägskommunikation mellan servern och klienten, där servern aktivt kan skicka data till klienten, medan klienten endast kan ta emot data.
  • Realtid: SSE etablerar långsiktiga anslutningar, vilket gör det möjligt för servrar att skicka data till klienter i realtid utan frekventa förfrågningar.


SSE vs. WebSocket

WebSocket är en annan webbteknologi som används för att möjliggöra realtidskommunikation med två vägar, vilket skiljer sig från SSE på vissa sätt. Här är en jämförelse mellan SSE och WebSocket:

  • Datastyrning: SSE är en envägskommunikation mellan servern och klienten, och servern kan aktivt skicka data till klienten. WebSocket, å andra sidan, är tvåvägskommunikation och möjliggör realtidsutbyte av tvåvägs data mellan servern och klienten.
  • Anslutningsetablering: SSE använder långa HTTP-baserade anslutningar för att etablera anslutningar via vanliga HTTP-förfrågningar och svar, vilket innebär realtidsöverföring av data. WebSockets använder anpassade protokoll för att möjliggöra tvåvägskommunikation genom att etablera WebSocket-anslutningar.
  • Kompatibilitet: Eftersom SSE baseras på HTTP-protokollet kan det användas i de flesta moderna webbläsare och kräver inga ytterligare protokolluppgraderingar. WebSockets stöds också i den stora majoriteten av moderna webbläsare, men de kan vara problematiska i vissa speciella nätverksmiljöer.
  • Tillämpliga scenarier: SSE är lämplig för situationer där servern skickar data till klienten i realtid, såsom aktiekursuppdateringar, nyheter i realtid, etc. WebSocket är lämpligt för scenarier som kräver realtidskommunikation med två vägar, såsom chattapplikationer och flerpersoners samarbetsredigering.
  • Beroende på dina specifika affärsbehov och scenarier beror valet av SSE eller WebSocket på dina faktiska behov. Om du bara behöver en server för att skicka data till klienter i en riktning och vill hålla det enkelt och kompatibelt är SSE ett bra val. Om du behöver uppnå tvåvägskommunikation, eller om du behöver mer avancerade funktioner och kontroll, kan WebSocket passa dina behov bättre.


SSE:s evenemangsströmformat

En händelseström är en enkel ström av textdata som bör kodas i UTF-8-format. EvenemangsflödeMeddelandet separeras av ett par radbrytningar。 Beteendekommentarer som börjar på kolon ignoreras. Varje fält representeras av ett fältnamn, följt av ett kolon, och sedan textdata för det fältets värde.

Fälten är följande:

händelse: En sträng som används för att identifiera händelsetypen. Om denna sträng anges skickar webbläsaren en händelse med det angivna händelsenamnet till rätt lyssnare; Klienten bör använda addEventListener() för att lyssna efter den angivna händelsen. Om ett meddelande inte anger ett händelsenamn kan onmessage-hanteraren anropas.
data: Datafältet i meddelandet. När EventSource tar emot flera på varandra följande rader som börjar med data:, sammanfogar den dem och infogar ett radbryt mellan dem. Radbrytningen i slutet tas bort.
Id: Event ID, som blir egenskapsvärdet för det aktuella EventSource-objektets interna egenskap "Last Event ID".
Igen: tiden att återknyta kontakten. Om anslutningen till servern förloras väntar webbläsaren under den angivna tiden och försöker sedan återansluta sig. Detta måste vara ett heltal som anger tiden för återanslutning i millisekunder. Om ett icke-heltalsvärde anges ignoreras fältet.


EventSource-instans

EventSource-gränssnittet är gränssnittet mellan webbinnehållet och servern för att skicka händelser.

EventHandler-egenskapen

EventSource.onopen anropas när anslutningen är öppen.
EventSource.onmessage anropas när ett meddelande tas emot utan ett händelseattribut.
EventSource.onerror anropas vid anslutningsundantag.

SSE Server (ASP.NET Core)

Skapa ett nytt ASP.NET Core-projekt med .NET 8 och kontrollerkoden är följande:


För klienten som etablerar länken, skicka ett meddelande till klienten varannan period.


SSE-klient

Skriv klientkod på Visa-sidan med html och js enligt följande:


Starta projektet med följande effekter:



Hänvisning:
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.




Föregående:En enkel jämförelse mellan Garnet cache och Redis utvecklat med .NET
Nästa:JS lyssnar efter ctrl + enter-tangentkombinationen
 Hyresvärd| Publicerad den 2024-4-5 12:03:28 |
Standardwebbläsarens EventSource API ställer vissa begränsningar för vilka typer av förfrågningar som får göras: de enda parameter-URL:erna som får skickas in är och withCredentials, därför:

Du kan inte skicka in förfrågningskroppen: Du måste koda all information som behövs för att köra förfrågan i URL:en, som är begränsad till 2000 tecken i de flesta webbläsare.
Du kan inte skicka in anpassade request-headers
Du kan bara göra en GET-förfrågan – ingen annan metod kan specificeras.
Om anslutningen bryts har du ingen kontroll över omprovningspolicyn: webbläsaren försöker tyst om för dig några gånger och stannar sedan, vilket inte är tillräckligt bra för någon typ av robust applikation.


hämta-händelsekälla

Biblioteket tillhandahåller ett alternativt gränssnitt baserat på Fetch API för användning av serverskickade händelser. Den är helt kompatibel med händelseströmformatet, så om du redan har en server som sänder dessa händelser kan du använda den som tidigare. Men nu har du mer kontroll över förfrågningar och svar

Inloggningen med hyperlänken är synlig.
Publicerad den 2024-11-14 14:34:25 |
lärd
 Hyresvärd| Publicerad den 2024-12-25 16:36:44 |
Liten slagg Publicerad den 2024-4-5 12:03
Standardwebbläsarens EventSource API lägger vissa begränsningar på vilka typer av förfrågningar som är tillåtna: den enda parameter-url:en som får skickas in är withCredentia ...

Kompileer NPM-paketet till ett webbläsarklart JavaScript-skript
https://www.itsvse.com/thread-10762-1-1.html
 Hyresvärd| Publicerad den 2024-12-25 16:48:45 |
SSE (2) problem med att hämta händelsekälla och återanslutning efter att ha bytt webbläsarflik
https://www.itsvse.com/thread-10906-1-1.html
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com