Middle+
Zašto su u HTML5 uvedeni događaji server-sent?
sobes.tech АИ
Одговор од АИ
Za implementaciju jednostranog kanala komunikacije između servera i klijenta. Server može slati podatke klijentu u bilo koje vreme nakon uspostavljanja veze.
Ključne karakteristike i prednosti:
- Efikasnost: Koristi se obična HTTP veza, minimizirajući troškove u poređenju sa pollingom.
- Jednostavnost: API server-sent events (SSE) je jednostavniji za korišćenje od WebSockets za jednostranu komunikaciju.
- Automatsko ponovo povezivanje: Pregledač automatski pokušava da se ponovo poveže u slučaju prekida veze.
- Podrška za tipove podataka: Podržano je slanje tekstualnih podataka u formatu
text/event-stream. - Podrška pregledača: Široko podržano od strane modernih pregledača.
Primene:
- Ažuriranje vesti u realnom vremenu.
- Obaveštenja o događajima (npr. novi poruke).
- Monitoring podataka u realnom vremenu (npr. berzanske cene).
- Napredak izvršavanja dugotrajnih zadataka.
Ovo je alternativa tradicionalnom polling-u, gde klijent periodično pita server da li ima ažuriranja. Za razliku od WebSockets, SSE je jednostrano, što olakšava njihovu primenu kada se podaci prenose samo od servera ka klijentu.
Primer na strani klijenta (JavaScript):
const eventSource = new EventSource('/events'); // URL za primanje događaja sa servera
eventSource.onmessage = function(event) {
// Obrada primljenih podataka
console.log('Primljena poruka:', event.data);
};
eventSource.onerror = function(error) {
// Obrada grešaka veze
console.error('Greška Server-Sent Events:', error);
};
eventSource.addEventListener('customEvent', function(event) {
// Obrada prilagođenog događaja tipa 'customEvent'
console.log('Prilagođeni događaj primljen:', event.data);
});
Primer formata podataka na strani servera:
event: customEvent
data: {"message": "Zdravo!"}
data: Jednostavna tekstualna poruka
id: 123 // Identifikator događaja, koristi se za automatsko ponovo povezivanje
retry: 5000 // Odlaganje pre sledećeg ponovnog povezivanja u milisekundama