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. |