Sobes.tech
Middle+

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

sobes.tech AI

Odpoveď od AI

Na implementáciu jednostranného kanála komunikácie medzi serverom a klientom. Server môže odosielať údaje klientovi kedykoľvek po nadviazaní spojenia.

Kľúčové vlastnosti a výhody:

  • Efektivita: Používa sa bežné HTTP spojenie, minimalizujúc náklady v porovnaní s pollingom.
  • Jednoduchosť: API server-sent events (SSE) je jednoduchšie na použitie ako WebSockets pre jednostrannú komunikáciu.
  • Automatické opätovné pripojenie: Prehliadač sa automaticky pokúsi znova pripojiť pri prerušení spojenia.
  • Podpora typov dát: Podporuje odosielanie textových dát vo formáte text/event-stream.
  • Podpora prehliadačov: Široko podporované modernými prehliadačmi.

Použitie:

  • Aktualizácie správ v reálnom čase.
  • Oznámenia o udalostiach (napríklad o nových správach).
  • Monitorovanie dát v reálnom čase (napríklad burzové kurzy).
  • Pokrok vykonávania dlhých úloh.

Toto je alternatíva k tradičnému polling, kde klient periodicky žiada server o dostupnosť aktualizácií. Na rozdiel od WebSockets je SSE jednostranné, čo zjednodušuje ich použitie, keď sa údaje prenášajú iba zo servera na klienta.

Príklad na strane klienta (JavaScript):

const eventSource = new EventSource('/events'); // URL na prijímanie udalostí zo servera

eventSource.onmessage = function(event) {
  // Spracovanie prijatých dát
  console.log('Prijatá správa:', event.data);
};

eventSource.onerror = function(error) {
  // Spracovanie chýb spojenia
  console.error('Chyba Server-Sent Events:', error);
};

eventSource.addEventListener('customEvent', function(event) {
  // Spracovanie vlastného udalosti typu 'customEvent'
  console.log('Prijatá vlastná udalosť:', event.data);
});

Príklad formátu dát na strane servera:

event: customEvent
data: {"message": "Ahoj!"}

data: Jednoduchá textová správa

id: 123 // Identifikátor udalosti, používa sa na automatické opätovné pripojenie

retry: 5000 // Meškanie pred ďalším opätovným pripojením v milisekundách