Sobes.tech
Middle

Prečo boli v HTML5 zavedené udalosti server-sent?

sobes.tech AI

Odpoveď od AI

Udalosti odoslané zo servera (SSE) boli zavedené v HTML5 na prenos dát zo servera na klienta v jednom smere, v reálnom čase, cez HTTP spojenie. To umožňuje prijímať aktualizácie od servera bez toho, aby klient musel neustále posielať požiadavky (polling). Hlavné výhody v porovnaní s inými technológiami:

  • Jednoduchosť: Používajú bežné HTTP spojenie, čo uľahčuje integráciu s existujúcimi webovými technológiami a infraštruktúrou.
  • Efektívnosť: Umožňujú serveru posielať dáta, keď sú pripravené, čím znižujú záťaž siete a servera v porovnaní s častým pollingom.
  • Automatické opätovné pripojenie: Prehliadač sa automaticky pokúsi obnoviť spojenie pri prerušení.
  • Vstavané spracovanie: API EventSource v prehliadači poskytuje jednoduché rozhranie na prácu s udalosťami a dátami.

Príklad použitia na strane klienta:

// Vytvorenie nového objektu EventSource, uvedením URL servera pre SSE
const eventSource = new EventSource('/updates');

// Spracovanie udalosti 'message' - prijímanie dát zo servera
eventSource.onmessage = function(event) {
  // Zobrazenie prijatých dát v konzole
  console.log('Nové dáta zo servera:', event.data);
};

// Spracovanie chýb pripojenia
eventSource.onerror = function(error) {
  console.error('Vyskytla sa chyba:', error);
};

Na serveri musí odpoveď mať MIME typ text/event-stream a mala by byť formátovaná nasledovne:

data: Toto je prvý riadok dát\n
data: Toto je druhý riadok dát\n\n

Každá správa končí dvomi znakmi nového riadku (\n\n). Každý riadok dát začína s data: . Môžu existovať aj iné polia, napríklad event: na označenie typu udalosti alebo id: pre identifikátor správy.

Udalosti odoslané zo servera sú vhodnou voľbou pre scenáre, kde server musí odosielať klientovi tok aktualizácií, ako sú oznámenia, spravodajské kanály, akciové kurzy alebo výsledky dlhodobých procesov. Sú jednoduchšie na implementáciu ako WebSockets pre jednostrannú komunikáciu.