Introducere SSE
SSE înseamnă Evenimente Trimise de Server, ceea ce înseamnă literalmente că serverul trimite informații către client. SSE este un canal unidirecțional,Serverul poate trimite informații doar către clientClientul poate primi cererea SSE doar după declanșarea prima dată și nu poate răspunde.
Caracteristicile cheie ale SSE includ:
- Ușurință în utilizare: SSE folosește formate de date bazate pe text, cum ar fi text simplu, JSON etc., ceea ce face relativ simplă trimiterea și analizarea datelor.
- Comunicare unidirecțională: SSE suportă comunicarea unidirecțională între server și client, unde serverul poate trimite activ date către client, în timp ce clientul poate primi doar datele.
- Timp real: SSE stabilește conexiuni pe termen lung, permițând serverelor să trimită date către clienți în timp real, fără cereri frecvente.
SSE vs. WebSocket
WebSocket este o altă tehnologie web folosită pentru a permite comunicarea bidirecțională în timp real, care diferă de SSE în unele privințe. Iată o comparație între SSE și WebSocket:
- Direcția împingerii datelor: SSE este o comunicare unidirecțională între server și client, iar serverul poate trimite activ datele către client. WebSocket, pe de altă parte, este o comunicație bidirecțională, permițând schimbul de date bidirecțional în timp real între server și client.
- Stabilirea conexiunilor: SSE folosește conexiuni lungi bazate pe HTTP pentru a stabili conexiuni prin cereri și răspunsuri HTTP obișnuite, astfel împingerea datelor în timp real. WebSocket-urile folosesc protocoale personalizate pentru a permite comunicarea bidirecțională prin stabilirea conexiunilor WebSocket.
- Compatibilitate: Deoarece SSE se bazează pe protocolul HTTP, poate fi folosit în majoritatea browserelor moderne și nu necesită upgrade-uri suplimentare ale protocolului. WebSocket-urile sunt, de asemenea, suportate în marea majoritate a browserelor moderne, dar pot fi problematice în unele medii speciale de rețea.
- Scenarii aplicabile: SSE este potrivit pentru scenarii în care serverul trimite date către client în timp real, cum ar fi actualizări de preț al acțiunilor, știri în timp real etc. WebSocket este potrivit pentru scenarii care necesită comunicare bidirecțională în timp real, cum ar fi aplicațiile de chat și editarea colaborativă cu mai multe persoane.
- În funcție de nevoile și scenariile specifice ale afacerii tale, alegerea SSE sau WebSocket depinde de nevoile tale reale. Dacă ai nevoie doar de un server pentru a trimite datele către clienți într-o singură direcție și vrei să păstrezi totul simplu și compatibil, SSE este o alegere bună. Dacă ai nevoie de comunicare bidirecțională sau de funcționalități și control mai avansate, atunci WebSocket ar putea fi o alegere mai bună pentru nevoile tale.
Formatul fluxului de evenimente SSE
Un flux de evenimente este un flux simplu de date text care trebuie codificate în format UTF-8. Flux de evenimenteMesajul este separat printr-o pereche de întreruperi de linie。 Liniile de comentariu comportamentale care încep cu un punct sunt ignorate. Fiecare câmp este reprezentat printr-un nume de câmp, urmat de două puncte, iar apoi datele text pentru valoarea acelui câmp.
Terenurile sunt următoarele:
eveniment: Un șir folosit pentru a identifica tipul evenimentului. Dacă acest șir este specificat, browserul trimite un eveniment cu numele specificat către ascultătorul corespunzător; Clientul ar trebui să folosească addEventListener() pentru a asculta evenimentul specificat. Dacă un mesaj nu specifică un nume de eveniment, atunci handler-ul onmessage poate fi apelat.
date: Câmpul de date al mesajului. Când EventSource primește mai multe linii consecutive începând cu data:, le concatenează, inserând o întrerupere de linie între ele. Întreruperea de linie de la capăt este eliminată.
Id: Event ID, care devine valoarea proprietății interne a obiectului EventSource curent "Last Event ID".
Reîncercare: momentul de a ne reconecta. Dacă se pierde conexiunea la server, browserul va aștepta intervalul de timp specificat și apoi va încerca să se reconecteze. Acesta trebuie să fie un număr întreg care specifică timpul de reconectare în milisecunde. Dacă este specificată o valoare neîntreagă, câmpul este ignorat.
Instanță EventSource
Interfața EventSource este interfața dintre conținutul web și server pentru a trimite evenimente.
Proprietatea EventHandler
EventSource.onopen este apelat când conexiunea este deschisă. EventSource.onmessage este apelat atunci când un mesaj este primit fără un atribut de eveniment. EventSource.onerror este numit pe excepțiile de conexiune.
SSE Server (ASP.NET Core)
Creează un nou proiect ASP.NET Core cu .NET 8 și codul controllerului este următorul:
Pentru clientul care stabilește legătura, se trimite un mesaj clientului la fiecare interval secund.
Client SSE
Scrie codul clientului în pagina View folosind html și js după cum urmează:
Începe proiectul cu următoarele efecte:
Referință:
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă. |