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