Middle+
Kāpēc HTML5 tika ieviesti server-sent notikumi?
sobes.tech AI
Atbilde no AI
Vienpusē saziņas kanāla īstenošanai starp serveri un klientu serveris var nosūtīt datus klientam jebkurā laikā pēc savienojuma izveidošanas:
Galvenās īpašības un priekšrocības:
- efektivitāte: tiek izmantots parasts HTTP savienojums, samazinot izmaksas salīdzinājumā ar polling
- vienkāršība: server-sent events (SSE) API ir vienkāršāks lietošanā nekā WebSockets vienpusējai saziņai
- automātiska atkārtota savienojuma izveide: pārlūkprogramma automātiski mēģina atkārtoti izveidot savienojumu pēc tā pārtraukšanas
- datu tipu atbalsts: atbalsta teksta datu sūtīšanu
text/event-streamformātā - pārlūkprogrammu atbalsts: plaši atbalstīts mūsdienu pārlūkprogrammās
Pielietojums:
- ziņu plūsmu atjaunināšana reāllaikā
- notikumu paziņojumi (piemēram, jaunas ziņas)
- datu monitorings reāllaikā (piemēram, biržas kotācijas)
- ilgtermiņa uzdevumu progresu
Šī ir alternatīva tradicionālajam polling, kur klients periodiski pieprasa no servera jaunumus. Atšķirībā no WebSockets, SSE ir vienpusējs, kas atvieglo tā izmantošanu, kad dati tiek sūtīti tikai no servera uz klientu.
Klienta puse (JavaScript) piemērs:
const eventSource = new EventSource('/events'); // URL, lai saņemtu notikumus no servera
eventSource.onmessage = function(event) {
// saņemto datu apstrāde
console.log('Saņemta ziņa:', event.data);
};
eventSource.onerror = function(error) {
// savienojuma kļūdu apstrāde
console.error('Server-Sent Events kļūda:', error);
};
eventSource.addEventListener('customEvent', function(event) {
// apstrādāt īpašu notikumu ar tipu 'customEvent'
console.log('Saņemts īpašs notikums:', event.data);
});
Servera pusē datu formāta piemērs:
event: customEvent
data: {"message": "Sveiki!"}
data: Vienkārša ziņa
id: 123 // notikuma identifikators, kas tiek izmantots automātiskai atkārtotai savienošanai
retry: 5000 // laika starpība nākamajam savienojumam milisekundēs