

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation WebSockets avec les CloudFront distributions
<a name="distribution-working-with.websockets"></a>

Amazon CloudFront prend en charge l'utilisation WebSocket d'un protocole TCP utile lorsque vous avez besoin de connexions bidirectionnelles de longue durée entre les clients et les serveurs. Une connexion persistante est souvent une exigence avec des applications en temps réel. Les scénarios que vous pouvez utiliser WebSockets incluent les plateformes de chat social, les espaces de travail collaboratifs en ligne, les jeux multijoueurs et les services fournissant des flux de données en temps réel, tels que les plateformes de trading financier. Les données via une WebSocket connexion peuvent circuler dans les deux sens pour une communication en duplex intégral. 

WebSocket la fonctionnalité est automatiquement activée pour fonctionner avec n'importe quelle distribution. Pour l'utiliserWebSockets, configurez l'une des options suivantes dans le comportement du cache associé à votre distribution :
+ Transmettre tous les en-têtes de demande utilisateur à votre origine. Vous pouvez utiliser la [politique de AllViewer gestion des demandes d'origine](using-managed-origin-request-policies.md#managed-origin-request-policy-all-viewer).
+ Transférer spécifiquement les en-têtes de demande `Sec-WebSocket-Key` et `Sec-WebSocket-Version` dans votre politique de demande d’origine.

## Comment fonctionne le WebSocket protocole
<a name="distribution-working-with.websockets.how-it-works"></a>

Le WebSocket protocole est un protocole TCP indépendant qui vous permet d'éviter une partie de la surcharge (voire une latence accrue) du protocole HTTP.

Pour établir une WebSocket connexion, le client envoie une requête HTTP normale qui utilise la sémantique de mise à niveau du protocole HTTP pour modifier le protocole. Le serveur peut ensuite terminer la liaison. La WebSocket connexion reste ouverte et le client ou le serveur peuvent s'envoyer des trames de données sans avoir à établir de nouvelles connexions à chaque fois.

Par défaut, le WebSocket protocole utilise le port 80 pour les WebSocket connexions régulières et le port 443 pour les WebSocket connexions via TLS. Les options que vous choisissez pour votre CloudFront [Viewer Protocol Policy](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy) et que vous [Protocole (origines personnalisées uniquement)](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy) appliquez aux WebSocket connexions ainsi qu'au trafic HTTP.

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

WebSocket les demandes doivent être conformes à la [RFC 6455](https://datatracker.ietf.org/doc/html/rfc6455) dans les formats standard suivants.

**Example Exemple de demande du 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 Exemple de réponse du serveur**  

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

Si la WebSocket connexion est déconnectée par le client ou le serveur, ou en raison d'une interruption du réseau, les applications clientes sont censées rétablir la connexion avec le serveur.

## WebSocket En-têtes recommandés
<a name="distribution-working-with.websockets.recomended-settings"></a>

Pour éviter des problèmes inattendus liés à la compression lors de l'utilisation WebSockets, nous vous recommandons d'inclure les en-têtes suivants dans une politique de demande [d'origine](origin-request-create-origin-request-policy.md) :
+ `Sec-WebSocket-Key`
+ `Sec-WebSocket-Version`
+ `Sec-WebSocket-Protocol`
+ `Sec-WebSocket-Accept`
+ `Sec-WebSocket-Extensions`

**Note**  
Actuellement, CloudFront seules les WebSocket connexions via le protocole HTTP/1.1 sont prises en charge.