SSE:n johdanto
SSE tarkoittaa Server-Sent Events, mikä kirjaimellisesti tarkoittaa, että palvelin lähettää tietoa asiakkaalle. SSE on yksisuuntainen kanava,Palvelin voi lähettää tietoja vain asiakkaalleAsiakas voi vastaanottaa SSE-pyynnön vasta ensimmäisen laukauksen jälkeen, eikä voi vastata.
SSE:n keskeisiä ominaisuuksia ovat:
- Helppokäyttöisyys: SSE käyttää tekstipohjaisia tietomuotoja, kuten tavallista tekstiä, JSONia jne., mikä tekee datan lähettämisestä ja jäsentämisestä suhteellisen helppoa.
- Yksisuuntainen viestintä: SSE tukee yksisuuntaista viestintää palvelimen ja asiakkaan välillä, jossa palvelin voi aktiivisesti välittää dataa asiakkaalle, kun taas asiakas voi vastaanottaa vain tiedot.
- Reaaliaikainen: SSE luo pitkäaikaiset yhteydet, jolloin palvelimet voivat lähettää dataa asiakkaille reaaliajassa ilman toistuvia pyyntöjä.
SSE vs. WebSocket
WebSocket on toinen verkkoteknologia, jota käytetään mahdollistamaan reaaliaikainen kaksisuuntainen viestintä, ja se eroaa SSE:stä monin tavoin. Tässä on vertailu SSE:n ja WebSocketin välillä:
- Data pushin suunta: SSE on yksisuuntainen viestintä palvelimen ja asiakkaan välillä, ja palvelin voi aktiivisesti siirtää dataa asiakkaalle. WebSocket puolestaan on kaksisuuntainen viestintä, joka mahdollistaa reaaliaikaisen kaksisuuntaisen tiedonvaihdon palvelimen ja asiakkaan välillä.
- Yhteyden muodostaminen: SSE käyttää pitkiä HTTP-pohjaisia yhteyksiä muodostaakseen yhteyksiä tavallisten HTTP-pyyntöjen ja -vastausten kautta, jolloin datan reaaliaikainen push. WebSocketit käyttävät mukautettuja protokollia mahdollistaakseen kaksisuuntaisen viestinnän muodostamalla WebSocket-yhteydet.
- Yhteensopivuus: Koska SSE perustuu HTTP-protokollaan, sitä voidaan käyttää useimmissa nykyaikaisissa selaimissa eikä vaadi lisäprotokollapäivityksiä. WebSocketit ovat myös tuettuja suurimmassa osassa nykyaikaisia selaimia, mutta ne voivat olla ongelmallisia joissakin erityisissä verkkoympäristöissä.
- Soveltuvat skenaariot: SSE sopii tilanteisiin, joissa palvelin lähettää dataa asiakkaalle reaaliajassa, kuten osakekurssipäivitykset, uutiset reaaliaikaisessa pushissa jne. WebSocket sopii tilanteisiin, joissa tarvitaan reaaliaikaista kaksisuuntaista viestintää, kuten chat-sovelluksiin ja monihenkilöiseen yhteistyöhön perustuvaan editointiin.
- Riippuen yrityksesi tarpeista ja tilanteista, SSE:n tai WebSocketin valinta riippuu todellisista tarpeistasi. Jos tarvitset palvelimen vain siirtääksesi dataa asiakkaille yhteen suuntaan ja haluat pitää sen yksinkertaisena ja yhteensopivana, SSE on hyvä valinta. Jos tarvitset kaksisuuntaista viestintää tai tarvitset kehittyneempiä ominaisuuksia ja ohjausta, WebSocket voi olla parempi valinta tarpeisiisi.
SSE-tapahtumastriimin muoto
Tapahtumavirta on yksinkertainen tekstidatan virta, joka tulee koodata UTF-8-muodossa. tapahtumavirtaViesti on erotettu kahden rivinvaihdon avulla。 Käyttäytymisen kommenttirivit, jotka alkavat kaksoispisteellä, jätetään huomiotta. Jokainen kenttä esitetään kentän nimellä, jota seuraa kaksoispiste ja lopuksi tekstin datalla kyseisen kentän arvosta.
Kentät ovat seuraavat:
tapahtuma: Merkkijono, jota käytetään tapahtumatyypin tunnistamiseen. Jos tämä merkkijono on määritelty, selain lähettää tapahtuman nimellä varustetun tapahtuman oikealle kuuntelijalle; Asiakkaan tulisi käyttää addEventListener():ää kuunnellakseen määriteltyä tapahtumaa. Jos viesti ei määritä tapahtuman nimeä, viestin käsittelijä voidaan kutsua.
data: Viestin datakenttä. Kun EventSource vastaanottaa useita peräkkäisiä rivejä, jotka alkavat data::, se yhdistää ne ja lisää rivinvaihdon niiden väliin. Viivanvaihto lopusta poistetaan.
henkilöllisyystodistus: Event ID, joka muodostaa nykyisen EventSource-objektin sisäisen ominaisuuden "Last Event ID" ominaisuuden arvon.
Yritä: aika ottaa yhteys uudelleen. Jos yhteys palvelimeen katkeaa, selain odottaa määrätyn ajan ja yrittää sitten yhdistää uudelleen. Tämän täytyy olla kokonaisluku, joka määrittelee uudelleenyhdistämisajan millisekunteina. Jos määritellään ei-kokonaislukuarvo, kenttä jätetään huomiotta.
EventSource-instanssi
EventSource-rajapinta on verkkosisällön ja palvelimen välinen rajapinta tapahtumien lähettämiseen.
EventHandler-ominaisuus
EventSource.onopen kutsutaan, kun yhteys on auki. EventSource.onmessage kutsutaan, kun viesti vastaanotetaan ilman tapahtumaattribuuttia. EventSource.onerror kutsutaan yhteyspoikkeuksille.
SSE-palvelin (ASP.NET Core)
Luo uusi ASP.NET Core -projekti .NET 8:lla ja ohjainkoodi on seuraava:
Asiakkaalle, joka luo linkin, lähetä viesti asiakkaalle joka toinen välein.
SSE-asiakas
Kirjoita asiakaskoodi Näkymä-sivulle html:llä ja js:llä seuraavasti:
Aloita projekti seuraavilla vaikutuksilla:
Viittaus:
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä. |