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