

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzare WebSockets con le distribuzioni CloudFront
<a name="distribution-working-with.websockets"></a>

Amazon CloudFront supporta l'utilizzo WebSocket di un protocollo basato su TCP utile quando sono necessarie connessioni bidirezionali di lunga durata tra client e server. Una connessione permanente è spesso un requisito con applicazioni in tempo reale. Gli scenari in cui potresti utilizzare WebSockets includono piattaforme di social chat, spazi di lavoro per la collaborazione online, giochi multigiocatore e servizi che forniscono feed di dati in tempo reale come piattaforme di trading finanziario. I dati tramite una WebSocket connessione possono fluire in entrambe le direzioni per una comunicazione full-duplex. 

WebSocket la funzionalità viene abilitata automaticamente per funzionare con qualsiasi distribuzione. Per WebSockets utilizzarla, configura uno dei seguenti comandi nel comportamento della cache associato alla tua distribuzione:
+ Inoltra tutte le intestazioni di richiesta visualizzatore all’origine. Puoi utilizzare la [policy di richiesta di origine AllViewer gestita](using-managed-origin-request-policies.md#managed-origin-request-policy-all-viewer).
+ Inoltra specificatamente le intestazioni di richiesta `Sec-WebSocket-Key` e `Sec-WebSocket-Version` nella policy di richiesta origine.

## Come funziona il WebSocket protocollo
<a name="distribution-working-with.websockets.how-it-works"></a>

Il WebSocket protocollo è un protocollo indipendente basato su TCP che consente di evitare il sovraccarico e il potenziale aumento della latenza di HTTP.

Per stabilire una WebSocket connessione, il client invia una richiesta HTTP regolare che utilizza la semantica di aggiornamento di HTTP per modificare il protocollo. Il server può quindi completare l'handshake. La WebSocket connessione rimane aperta e il client o il server possono scambiarsi frame di dati senza dover stabilire nuove connessioni ogni volta.

Per impostazione predefinita, il WebSocket protocollo utilizza la porta 80 per WebSocket le connessioni regolari e la porta 443 per WebSocket le connessioni tramite TLS. Le opzioni che scegli per te [Protocollo (solo origini personalizzate)](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy) si applicano alle WebSocket connessioni CloudFront [Viewer Protocol Policy (Policy protocollo visualizzatore)](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy) e anche al traffico HTTP.

## WebSocket requisiti
<a name="distribution-working-with.websockets.requirements"></a>

WebSocket le richieste devono essere conformi alla [RFC 6455](https://datatracker.ietf.org/doc/html/rfc6455) nei seguenti formati standard.

**Example Esempio di richiesta client**  

```
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: https://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
```

**Example Esempio di risposta del server**  

```
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: chat
```

Se la WebSocket connessione viene interrotta dal client o dal server o a causa di un'interruzione della rete, è previsto che le applicazioni client riavviino la connessione con il server.

## Intestazioni consigliate WebSocket
<a name="distribution-working-with.websockets.recomended-settings"></a>

[Per evitare problemi imprevisti relativi alla compressione durante l'utilizzo WebSockets, ti consigliamo di includere le seguenti intestazioni in una policy di richiesta di origine:](origin-request-create-origin-request-policy.md)
+ `Sec-WebSocket-Key`
+ `Sec-WebSocket-Version`
+ `Sec-WebSocket-Protocol`
+ `Sec-WebSocket-Accept`
+ `Sec-WebSocket-Extensions`

**Nota**  
Attualmente, supporta CloudFront solo WebSocket connessioni tramite il protocollo HTTP/1.1.