Sobes.tech
Middle+

Proč byly v HTML5 zavedeny události server-sent?

sobes.tech AI

Odpověď od AI

Pro implementaci jednostranného kanálu komunikace mezi serverem a klientem. Server může odesílat data klientovi kdykoli po navázání spojení.

Klíčové vlastnosti a výhody:

  • Efektivita: Používá běžné HTTP spojení, minimalizuje režii ve srovnání s pollingem.
  • Jednoduchost: API server-sent events (SSE) je jednodušší na použití než WebSockets pro jednostrannou komunikaci.
  • Automatické znovu připojení: Prohlížeč se automaticky pokusí znovu připojit při přerušení spojení.
  • Podpora typů dat: Podporuje odesílání textových dat ve formátu text/event-stream.
  • Podpora prohlížeči: Široce podporováno moderními prohlížeči.

Použití:

  • Aktualizace zpravodajských kanálů v reálném čase.
  • Oznámení o událostech (například o nových zprávách).
  • Monitorování dat v reálném čase (například burzovní kurzy).
  • Progres dlouhotrvajících úloh.

Toto je alternativa k tradičnímu polling, kdy klient periodicky žádá server o aktualizace. Na rozdíl od WebSockets je SSE jednostranné, což zjednodušuje jejich použití, když jsou data přenášena pouze ze serveru na klienta.

Příklad na straně klienta (JavaScript):

const eventSource = new EventSource('/events'); // URL pro příjem událostí ze serveru

eventSource.onmessage = function(event) {
  // Zpracování obdržených dat
  console.log('Obdržená zpráva:', event.data);
};

eventSource.onerror = function(error) {
  // Zpracování chyb spojení
  console.error('Chyba Server-Sent Events:', error);
};

eventSource.addEventListener('customEvent', function(event) {
  // Zpracování vlastního události typu 'customEvent'
  console.log('Obdržená vlastní událost:', event.data);
});

Příklad formátu dat na straně serveru:

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

data: Jednoduchá textová zpráva

id: 123 // Identifikátor události, používá se pro automatické znovu připojení

retry: 5000 // Zpoždění před dalším znovu připojením v milisekundách