Ce face EventSource (Server-Sent Events)
EventSource deschide o conexiune pe care doar serverul trimite date (Server-Sent Events), în format text. Este mai simplu decât un WebSocket când clientul doar ascultă: știri, progresul unei operații, răspunsurile unui chatbot afișate pe măsură ce sunt generate.
Dacă legătura cade, browserul se reconectează singur. Mesajele ajung în evenimentul message (sau în evenimente cu nume, dacă serverul le trimite cu event:), iar close() oprește conexiunea definitiv.
Parametri
| Parametru | Descriere |
|---|---|
url |
Adresa fluxului (serverul răspunde cu Content-Type: text/event-stream). |
optiuni |
Opțional. { withCredentials: true } pentru cookie-uri pe alt domeniu. |
Ce returnează
Un obiect EventSource.
Exemple
Exemplul 1: Progresul unui export
const sursa = new EventSource("/api/export/progres");
sursa.addEventListener("message", (e) => {
const { procent } = JSON.parse(e.data);
console.log(`progres: ${procent}%`);
if (procent === 100) sursa.close();
});
Rezultat posibil (depinde de răspunsul serverului)
progres: 25%
progres: 60%
progres: 100%
Greșeli frecvente
- Uiți
close()la final. Browserul consideră închiderea de către server o întrerupere și se reconectează la nesfârșit.
Comenzi înrudite
WebSocket: O conexiune permanentă, în ambele sensuri, cu un server: chat, notificări, prețuri în timp real.fetch: Trimite o cerere HTTP la un server și primește răspunsul, fără reîncărcarea paginii.JSON.parse: Transformă un text JSON într-un obiect sau tablou JavaScript.