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:
EventSourceAPI 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.