Sobes.tech
Middle

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: EventSource API 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.