Middle+
Miks HTML5-sse lisati server-sent sündmused?
sobes.tech AI
Vastus AI-lt
Ühe suuna sidekanali loomise jaoks serveri ja kliendi vahel, kus server saab saata andmeid kliendile igal ajal pärast ühenduse loomist:
Peamised omadused ja eelised:
- tõhusus: kasutatakse tavalist HTTP-ühendust, mis vähendab kulusid võrreldes pollinguga
- lihtsus: server-sent events (SSE) API on lihtsam kasutada kui WebSockets ühe suuna ühenduse jaoks
- automaatne uuesti ühendamine: brauser püüab automaatselt uuesti ühendust luua ühenduse katkemisel
- andmetüüpide tugi: toetab tekstandmete saatmist
text/event-streamformaadis - brauserite tugi: laialdaselt toetatud kaasaegsete brauseritega
Rakendused:
- uudisvoogude reaalajas uuendamine
- sündmuste teated (näiteks uued sõnumid)
- andmete jälgimine reaalajas (näiteks börkide hinnad)
- pikaajaliste ülesannete edenemise näitamine
See on alternatiiv traditsioonilisele pollingule, kus klient küsib regulaarselt serverilt uuendusi. WebSocketsist erinevalt on SSE ühe suuna, mis lihtsustab nende kasutamist, kui andmed edastatakse ainult serverist kliendile.
Kliendi pool (JavaScript) näide:
const eventSource = new EventSource('/events'); // URL sündmuste saamiseks serverilt
eventSource.onmessage = function(event) {
// saadud andmete töötlemine
console.log('Saadud sõnum:', event.data);
};
eventSource.onerror = function(error) {
// ühenduse vigade töötlemine
console.error('Server-Sent Events viga:', error);
};
eventSource.addEventListener('customEvent', function(event) {
// spetsiaalse sündmuse töötlemine, mille tüüp on 'customEvent'
console.log('Saadud spetsiaalne sündmus:', event.data);
});
Serveri poolt andmete formaadi näide:
event: customEvent
data: {"message": "Tere!"}
data: Lihtne sõnum
id: 123 // sündmuse identifikaator, mida kasutatakse automaatseks uuesti ühendamiseks
retry: 5000 // viivitus järgmise ühenduse loomise vahel millisekundites