Sobes.tech
Middle

Kāpēc HTML5 tika ieviesti server-sent notikumi?

sobes.tech AI

Atbilde no AI

Servera nosūtīti notikumi (SSE) ir ieviesti HTML5, lai nodrošinātu datu pārraidi no servera klientam vienpusēji, reāllaikā, izmantojot HTTP savienojumu. Tas ļauj saņemt atjauninājumus no servera bez nepieciešamības pastāvīgi sūtīt pieprasījumus (poliņus). Galvenās priekšrocības salīdzinājumā ar citām tehnoloģijām:

  • Vienkāršība: Izmanto parastu HTTP savienojumu, kas atvieglo integrāciju ar esošajām tīmekļa tehnoloģijām un infrastruktūru.
  • Efektivitāte: Ļauj serverim sūtīt datus, kad tie ir gatavi, samazinot tīkla un servera slodzi, salīdzinot ar biežu poliņu sūtīšanu.
  • Automātiska atkārtota savienojuma izveide: Pārlūkprogramma automātiski mēģina atjaunot savienojumu, ja tas tiek pārtraukts.
  • Iebūvēta apstrāde: EventSource API pārlūkprogrammā nodrošina vienkāršu saskarni notikumu un datu darbam.

Piemērs klienta pusē:

// Izveido jaunu `EventSource` objektu, norādot SSE servera URL
const eventSource = new EventSource('/updates');

// Apstrādā 'message' notikumu – saņem datus no servera
eventSource.onmessage = function(event) {
  // Izvada saņemtos datus konsolē
  console.log('Jauni dati no servera:', event.data);
};

// Apstrādā savienojuma kļūdu
eventSource.onerror = function(error) {
  console.error('Radās kļūda:', error);
};

Servera atbildei jābūt MIME tipam text/event-stream un jāformatē šādi:

data: Šī ir pirmā datu rinda

data: Šī ir otrā datu rinda

Katrs ziņojums beidzas ar diviem jauniem rindiņas simboliem (\n\n). Katra datu rinda sākas ar data: . Var būt arī citas lauki, piemēram, event: – notikuma veida norādei vai id: – ziņojuma identifikatoram.

Servera nosūtītie notikumi ir laba izvēle scenārijiem, kuros serveris jānosūta klientam datu plūsma, piemēram, paziņojumi, ziņu plūsmas, akciju cenas vai ilgstošu procesu rezultāti. Tie ir vienkāršāki īstenošanai nekā WebSockets, vienvirziena sakari.