

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan WebSockets dengan CloudFront distribusi
<a name="distribution-working-with.websockets"></a>

Amazon CloudFront mendukung penggunaan WebSocket, protokol berbasis TCP yang berguna ketika Anda membutuhkan koneksi dua arah yang berumur panjang antara klien dan server. Koneksi yang persisten sering kali merupakan persyaratan dengan aplikasi waktu nyata. Skenario yang mungkin Anda gunakan WebSockets termasuk platform obrolan sosial, ruang kerja kolaborasi online, game multi-pemain, dan layanan yang menyediakan umpan data real-time seperti platform perdagangan keuangan. Data melalui WebSocket koneksi dapat mengalir di kedua arah untuk komunikasi dupleks penuh. 

WebSocket fungsionalitas secara otomatis diaktifkan untuk bekerja dengan distribusi apa pun. Untuk menggunakanWebSockets, konfigurasikan salah satu dari berikut ini dalam perilaku cache yang dilampirkan ke distribusi Anda:
+ Teruskan semua header permintaan penampil ke asal Anda. Anda dapat menggunakan [kebijakan permintaan asal AllViewer terkelola](using-managed-origin-request-policies.md#managed-origin-request-policy-all-viewer).
+ Teruskan header `Sec-WebSocket-Key` dan `Sec-WebSocket-Version` minta secara khusus dalam kebijakan permintaan asal Anda.

## Bagaimana WebSocket protokol bekerja
<a name="distribution-working-with.websockets.how-it-works"></a>

 WebSocket Protokol ini adalah protokol independen berbasis TCP yang memungkinkan Anda menghindari beberapa overhead—dan berpotensi meningkatkan latensi—HTTP.

Untuk membuat WebSocket koneksi, klien mengirimkan permintaan HTTP reguler yang menggunakan semantik upgrade HTTP untuk mengubah protokol. Server kemudian dapat menyelesaikan proses. WebSocket Koneksi tetap terbuka dan klien atau server dapat mengirim bingkai data satu sama lain tanpa harus membuat koneksi baru setiap kali.

Secara default, WebSocket protokol menggunakan port 80 untuk WebSocket koneksi reguler dan port 443 untuk WebSocket koneksi melalui TLS. Opsi yang Anda pilih untuk Anda CloudFront [Kebijakan protokol penampil](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy) dan [Protokol (hanya asal kustom)](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy) berlaku untuk WebSocket koneksi dan juga lalu lintas HTTP.

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

WebSocket permintaan harus mematuhi [RFC 6455](https://datatracker.ietf.org/doc/html/rfc6455) dalam format standar berikut.

**Example Contoh permintaan klien**  

```
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 Contoh respon server**  

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

Jika WebSocket koneksi terputus oleh klien atau server, atau oleh gangguan jaringan, aplikasi klien diharapkan untuk memulai kembali koneksi dengan server.

## WebSocket Header yang direkomendasikan
<a name="distribution-working-with.websockets.recomended-settings"></a>

Untuk menghindari masalah terkait kompresi yang tidak terduga saat menggunakan WebSockets, sebaiknya sertakan header berikut dalam kebijakan permintaan [asal](origin-request-create-origin-request-policy.md):
+ `Sec-WebSocket-Key`
+ `Sec-WebSocket-Version`
+ `Sec-WebSocket-Protocol`
+ `Sec-WebSocket-Accept`
+ `Sec-WebSocket-Extensions`

**catatan**  
Saat ini, CloudFront hanya mendukung WebSocket koneksi melalui protokol HTTP/1.1.