Miks HTML5-sse on sisse viidud server-sent sündmused?
sobes.tech AI
Vastus AI-lt
Server-sent events (SSE) on sisse viidud HTML5-sse, et edastada andmeid serverilt kliendile ühepoolselt, reaalajas, HTTP-ühenduse kaudu. See võimaldab saada värskendusi serverilt ilma, et klient peaks pidevalt saatma päringuid (poliing). Peamised eelised teiste tehnoloogiate ees:
- Lihtsus: Kasutab tavalist HTTP-ühendust, mis lihtsustab integreerimist olemasolevate veebitehnoloogiate ja infrastruktuuriga.
- Tõhusus: Lubab serveril saata andmeid, kui need on valmis, vähendades võrgu ja serveri koormust võrreldes sagedase poliinguga.
- Automaatne uuesti ühendamine: Brauser püüab automaatselt taastada ühenduse katkestuse korral.
- Sisseehitatud töötlemine:
EventSourceAPI brauseris pakub lihtsat liidest sündmuste ja andmete töötlemiseks.
Kliendi poole näide:
// Loome uue `EventSource` objekti, määrates SSE serveri URL-i
const eventSource = new EventSource('/updates');
// Töötleme 'message' sündmust – andmete saamine serverilt
eventSource.onmessage = function(event) {
// Väljasta saadud andmed konsoolile
console.log('Uued andmed serverilt:', event.data);
};
// Töötleme ühenduse viga
eventSource.onerror = function(error) {
console.error('Viga tekkis:', error);
};
Serveri vastus peab olema MIME-tüüp text/event-stream ja vormindatud järgmiselt:
data: See on esimene andmerida
data: See on teine andmerida
Iga sõnum lõpeb kahe reavahetusmärgiga (\n\n). Iga andmerida algab data: -ga. Võivad olla ka teised väljad, näiteks event: sündmuse tüübi või id: sõnumi identifikaatori jaoks.
Server-sent sündmused on hea valik stsenaariumides, kus server peab saatma kliendile andmevoogu, näiteks teavitused, uudistevood, aktsiahinnad või pikaajaliste protsesside tulemused. Need on lihtsamad rakendada kui WebSockets, ühe suuna ühendus jaoks.