Sobes.tech
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-stream formā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