Skip to content

Commit e5123e4

Browse files
Prima stesura completa articolo
1 parent 26e8ab1 commit e5123e4

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

5-network/12-server-sent-events/article.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
# Server Sent Events
22

3-
La specifica [Server-Sent Events](https://html.spec.whatwg.org/multipage/comms.html#the-eventsource-interface) descrive una classe built-in `EventSource`, che mantiene la connesione con il server e permette di ricevere eventi da esso.
3+
La specifica [Server-Sent Events](https://html.spec.whatwg.org/multipage/comms.html#the-eventsource-interface) descrive una classe built-in `EventSource`, che mantiene la connessione con il server e permette di ricevere eventi da esso.
44

55
In modo simile ai `WebSocket`, la connessione è persistente.
66

77
Ci sono però delle differenze sostanziali:
88

99
| `WebSocket` | `EventSource` |
1010
|-------------|---------------|
11-
| Bi-directional: both client and server can exchange messages | One-directional: only server sends data |
12-
| Binary and text data | Only text |
13-
| WebSocket protocol | Regular HTTP |
11+
| Bidirezionale: sia il client che il server possono scambiare messaggi | Unidirezionale: solamente il server può inviare messaggi |
12+
| Dati binari e testuali | Solo testuali |
13+
| Protocollo WebSocket | HTTP standard |
1414

1515
`EventSource` è un modo meno potente di comunicare con il server rispetto ai `WebSocket`.
1616

1717
Perchè dovremmo usarli?
1818

1919
La ragione principale: è semplice da usare. In molte applicazioni, la potenza dei `WebSocket` è anche troppa.
2020

21-
Abbiamo necessità di rivcevere un data stream da un server: forse messaggi di chat o prezzi dei mercati. Quusto è ciò per cui `EventSource` è fatto. Supporta anche l'uto riconessione, qualcosa che dobbiamo invece implementare manualmente nei `WebSocket`. Oltretutto, è un normalissimo HTTP, e non un nuovo protocollo.
21+
Se abbiamo necessità di ricevere un flusso di dati da un server: che siano messaggi di chat o variazioni di prezzo dei mercati. Allora è ciò per cui `EventSource` è fatto. Supporta anche l'auto riconessione, la qualcosa dovremmo invece implementare manualmente nei `WebSocket`. Oltretutto, è un normalissimo HTTP, e non un nuovo protocollo.
2222

2323
## Ottenere i messaggi
2424

2525
Per cominciare a ricevere messaggi, dobbiamo solamente creare un `new EventSource(url)`.
2626

2727
Il browser si connetterà all'url e terrà la connessione aperta, in attesa di eventi.
2828

29-
Il server dovrebbe rispondere con status 200 e l'header `Content-Type: text/event-stream`, quindi, tenere aperta la connessione e scrivere i messaggi all'interno di esso in un formato speciale come questo:
29+
Il server dovrebbe rispondere con status 200 ed header `Content-Type: text/event-stream`, dopodichè mantenere aperta la connessione e scrivere i messaggi all'interno di esso in un formato speciale del tipo:
3030

3131
```
3232
data: Message 1
@@ -39,7 +39,7 @@ data: of two lines
3939

4040
- Un messaggio di testo che va dopo `data:`, lo spazio dopo la virgola è opzionale.
4141
- I messaggi sono delimitati con un doppio line break `\n\n`.
42-
- Per inviare un line break `\n`, possiamo inviare immediatamente un altro `data:` (il terzo messaggio poco più sopra).
42+
- Per inviare un line break `\n`, possiamo inviare immediatamente un altro `data:` (il terzo messaggio nell'esempio qui sopra).
4343

4444
In pratica, i messaggi complessi sono solitamente inviati tramite oggetti codificati in JSO. I Line-breaks sono codificati come `\n` tra essi, e in questo modo i messaggi `data:` multiriga non sono necessari
4545

@@ -90,7 +90,7 @@ In fase di creazione, `new EventSource` si connette al server, e se la connessio
9090

9191
Ciò è molto conveniente, dal momento che non ci dobbiamo curare della cosa.
9292

93-
C'è un piccolo ritardo tra le riconessioni, pochi secondi di default.
93+
C'è un piccolo ritardo tra le riconnessioni, pochi secondi di default.
9494

9595
Il server può impostare il ritardo raccomandato usando `retry:` nella risposta (in millisecondi)
9696

@@ -137,21 +137,21 @@ Quando viene ricevuto un messaggio con `id:`, il browser:
137137
- Imposta la proprietà `eventSource.lastEventId` su quel valore.
138138
- In fase di riconnessione invia l'header `Last-Event-ID` con quell'`id`, in modo da permettere al server di reinviare i messaggi successivi.
139139

140-
```smart header="Put `id:` after `data:`"
141-
Nota bene: l'`id` viene aggiunto sotto il messaggio `data` dal server, per assicurarsi che `lastEventId` venga aggiornato solamente dopo che il messaggio sia stato ricevuto.
140+
```smart header="Inserisci `id:` dopo `data:`"
141+
Nota bene: l'`id` viene aggiunto dopo il messaggio `data` dal server, per assicurarsi che `lastEventId` venga aggiornato solamente dopo che il messaggio sia stato ricevuto.
142142
```
143143
144144
## Stato della conessione: readyState
145145
146146
L'oggetto `EventSource` possiede la proprietà `readyState`, che assume uno tra questi tre valori:
147147
148148
```js no-beautify
149-
EventSource.CONNECTING = 0; // cnnessione o riconnessione
149+
EventSource.CONNECTING = 0; // connessione o riconnessione
150150
EventSource.OPEN = 1; // connesso
151151
EventSource.CLOSED = 2; // connessione chiusa
152152
```
153153

154-
Quando viene creato un oggetto, o la connessione è assente, è sempre `EventSource.CONNECTING` (equivale a `0`).
154+
Quando viene creato un oggetto, o se la connessione è assente, viene valorizzato sempre a `EventSource.CONNECTING` (equivale a `0`).
155155

156156
Possiamo interrogare questa proprietà per sapere lo stato di `EventSource`.
157157

@@ -222,7 +222,7 @@ La sintassi è:
222222
let source = new EventSource(url, [credentials]);
223223
```
224224

225-
Il secondo argomento ha solo una opzione possibile: `{ withCredentials: true }`, il quale permette di inviare credenziali cross-origin.
225+
Il secondo argomento consta di una sola opzione possibile: `{ withCredentials: true }`, la quale permette di inviare credenziali cross-origin.
226226

227227
Complessivamente la sicurezza del cross-origin è la stessa di `fetch` e altri metodi di rete.
228228

@@ -248,7 +248,7 @@ Complessivamente la sicurezza del cross-origin è la stessa di `fetch` e a
248248
: La connessione è stabilita.
249249

250250
`error`
251-
: In caseo di error, inclusi sia la connessione persa (si riconnetterà automaticamente), e errori fatali. Possiamo controllare `readyState` per vedere se è stata tentata la riconnessione.
251+
: In caso di errori, includendo sia la connessione persa (si riconnetterà automaticamente), che errori fatali. Possiamo controllare `readyState` per vedere se è stata tentata la riconnessione.
252252

253253
Il server pu&ograve; impostare un evento custom dentro `event:`. Questi eventi andrebbero gestiti usando `addEventListener`, e non `on<event>`.
254254

0 commit comments

Comments
 (0)