Sobes.tech
Middle

De ce au fost introduse evenimentele server-sent în HTML5?

sobes.tech AI

Răspuns de la AI

Evenimentele trimise de server (SSE) au fost introduse în HTML5 pentru a transmite date de la server către client într-un singur sens, în timp real, printr-o conexiune HTTP. Acest lucru permite primirea actualizărilor de la server fără ca clientul să fie nevoit să trimită constant solicitări (polling). Principalele avantaje comparativ cu alte tehnologii:

  • Simplitate: Utilizează o conexiune HTTP obișnuită, ceea ce facilitează integrarea cu tehnologiile și infrastructura web existente.
  • Eficiență: Permite serverului să trimită date atunci când sunt gata, reducând sarcina asupra rețelei și serverului comparativ cu polling-ul frecvent.
  • Reconectare automată: Browserul încearcă automat să refacă conexiunea în caz de întrerupere.
  • Procesare încorporată: API-ul EventSource din browser oferă o interfață simplă pentru lucrul cu evenimente și date.

Exemplu de utilizare pe client:

// Creăm un nou obiect EventSource, indicând URL-ul serverului pentru SSE
const eventSource = new EventSource('/updates');

// Procesăm evenimentul 'message' - primirea datelor de la server
eventSource.onmessage = function(event) {
  // Afișăm datele primite în consolă
  console.log('Date noi de la server:', event.data);
};

// Procesăm eroarea de conexiune
eventSource.onerror = function(error) {
  console.error('A apărut o eroare:', error);
};

Pe server, răspunsul trebuie să aibă tipul MIME text/event-stream și să fie formatat astfel:

data: Aceasta este prima linie de date\n
data: Aceasta este a doua linie de date\n\n

Fiecare mesaj se termină cu două caractere de linie nouă (\n\n). Fiecare linie de date începe cu data: . Pot exista și alte câmpuri, precum event: pentru indicarea tipului de eveniment sau id: pentru identificatorul mesajului.

Evenimentele trimise de server sunt o alegere bună pentru scenarii în care serverul trebuie să trimită clientului un flux de actualizări, cum ar fi notificări, fluxuri de știri, cotații bursiere sau rezultate ale proceselor de durată lungă. Sunt mai simple de implementat decât WebSockets pentru comunicare unidirecțională.