Skip to content

Commit d2b06a8

Browse files
ptoffyfpseverino
andauthored
Add Italian WebSockets translation (#970)
Co-authored-by: Francesco Paolo Severino <[email protected]>
1 parent b6a8f3a commit d2b06a8

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

docs/advanced/websockets.it.md

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# WebSocket
2+
3+
[WebSocket](https://it.wikipedia.org/wiki/WebSocket) è un protocollo di comunicazione bidirezionale usato per trasmettere messaggi tra client e server. A differenza di HTTP, che utilizza un pattern di richiesta-risposta, i WebSocket consentono di inviare un numero arbitrario di messaggi in entrambe le direzioni. L'API WebSocket di Vapor ti permette di creare sia client che server che gestiscono messaggi in modo asincrono.
4+
5+
## Server
6+
7+
Gli endpoint WebSocket possono essere aggiunti alla tua applicazione Vapor esistente utilizzando l'API di routing. Usa il metodo `webSocket` come faresti con `get` o `post`.
8+
9+
```swift
10+
app.webSocket("echo") { req, ws in
11+
// WebSocket connesso.
12+
print(ws)
13+
}
14+
```
15+
16+
Le route WebSocket possono essere raggruppate e protette da middleware come le normali route.
17+
18+
Oltre ad accettare la richiesta HTTP in ingresso, i gestori WebSocket accettano la connessione WebSocket appena stabilita. Vedi sotto per ulteriori informazioni sull'utilizzo di questo WebSocket per inviare e leggere messaggi.
19+
20+
## Client
21+
22+
Per connetterti a un endpoint WebSocket remoto, usa `WebSocket.connect`.
23+
24+
```swift
25+
WebSocket.connect(to: "ws://echo.websocket.org", on: eventLoop) { ws in
26+
// WebSocket connesso.
27+
print(ws)
28+
}
29+
```
30+
31+
Il metodo `connect` restituisce un future che si completa quando la connessione è stabilita. Una volta connesso, il blocco fornito verrà chiamato con il WebSocket appena connesso. Vedi sotto per ulteriori informazioni sull'utilizzo di questo WebSocket per inviare e leggere messaggi.
32+
33+
## Messaggi
34+
35+
La classe `WebSocket` ha metodi per inviare e ricevere messaggi e per ascoltare eventi come la chiusura. I WebSocket possono trasmettere dati tramite due protocolli: testo e binario. I messaggi di testo sono interpretati come stringhe UTF-8 mentre i dati binari sono interpretati come un array di byte.
36+
37+
### Invio
38+
39+
I messaggi possono essere inviati utilizzando il metodo `send` del WebSocket.
40+
41+
```swift
42+
ws.send("Ciao, mondo")
43+
```
44+
45+
Passare una `String` a questo metodo comporta l'invio di un messaggio di testo. I messaggi binari possono essere inviati passando un `[UInt8]`.
46+
47+
```swift
48+
ws.send([1, 2, 3])
49+
```
50+
51+
L'invio di messaggi è asincrono. Puoi fornire una `EventLoopPromise` al metodo di invio per essere notificato quando il messaggio è stato inviato o non è stato possibile inviarlo.
52+
53+
```swift
54+
let promise = eventLoop.makePromise(of: Void.self)
55+
ws.send(..., promise: promise)
56+
promise.futureResult.whenComplete { result in
57+
// Riuscito o non riuscito a inviare.
58+
}
59+
```
60+
61+
Se stai usando `async`/`await` puoi usare `await` per attendere il completamento dell'operazione asincrona.
62+
63+
```swift
64+
try await ws.send(...)
65+
```
66+
67+
### Ricezione
68+
69+
I messaggi possono essere ricevuti utilizzando il metodo `onText` o `onBinary` del WebSocket.
70+
71+
```swift
72+
ws.onText { ws, text in
73+
// Testo ricevuto.
74+
print(text)
75+
}
76+
77+
ws.onBinary { ws, binary in
78+
// [UInt8] ricevuto.
79+
print(binary)
80+
}
81+
```
82+
83+
Il primo argomento del blocco di callback è il WebSocket stesso. Questo permette l'accesso al WebSocket all'interno del callback senza creazione di riferimenti circolari.
84+
85+
```swift
86+
// Stampa il messagio ricevuto
87+
ws.onText { ws, text in
88+
print(text)
89+
}
90+
```
91+
92+
## Chiusura
93+
94+
Per chiudere il WebSocket, chiama il metodo `close`.
95+
96+
```swift
97+
ws.close()
98+
```
99+
100+
Questo metodo ritorna un future che si completa quando la connessione è stata chiusa. Come per l'invio di messaggi, puoi fornire una `EventLoopPromise` per essere notificato quando la connessione è stata chiusa.
101+
102+
```swift
103+
ws.close(promise: nil)
104+
```
105+
106+
Oppure puoi attendere la chiusura del WebSocket utilizzando `await`.
107+
108+
```swift
109+
try await ws.close()
110+
```
111+
112+
Per essere notificato quando il WebSocket è stato chiuso, dal server o dal client che sia, puoi ascoltare l'evento `onClose`.
113+
114+
```swift
115+
ws.onClose.whenComplete { result in
116+
// WebSocket chiuso.
117+
}
118+
```
119+
120+
La proprietà `closeCode` del WebSocket contiene il codice di chiusura inviato dal peer, e può essere utilizzato per determinare il motivo per cui la connessione è stata chiusa.
121+
122+
## Ping / Pong
123+
124+
Dei messaggi di ping e pong vengono inviati automaticamente dal client e dal server per mantenere attive le connessioni WebSocket. La tua applicazione può ascoltare questi eventi utilizzando i callback `onPing` e `onPong`.
125+
126+
```swift
127+
ws.onPing { ws in
128+
// Ping ricevuto.
129+
}
130+
131+
ws.onPong { ws in
132+
// Pong ricevuto.
133+
}
134+
```

0 commit comments

Comments
 (0)