Siapkan $connect rute yang membutuhkan WebSocket subprotokol - Amazon API Gateway

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

Siapkan $connect rute yang membutuhkan WebSocket subprotokol

Klien dapat menggunakan Sec-WebSocket-Protocol bidang untuk meminta WebSocket subprotokol selama koneksi ke WebSocket API Anda. Anda dapat menyiapkan integrasi untuk $connect rute untuk mengizinkan koneksi hanya jika klien meminta subprotokol yang didukung API Anda.

Contoh berikut fungsi Lambda mengembalikan Sec-WebSocket-Protocol header ke klien. Fungsi ini membuat koneksi ke API Anda hanya jika klien menentukan subprotokol. myprotocol

Untuk AWS CloudFormation template yang membuat contoh integrasi proxy API dan Lambda ini, lihat. ws-subprotocol.yaml

export const handler = async (event) => { if (event.headers != undefined) { const headers = toLowerCaseProperties(event.headers); if (headers['sec-websocket-protocol'] != undefined) { const subprotocolHeader = headers['sec-websocket-protocol']; const subprotocols = subprotocolHeader.split(','); if (subprotocols.indexOf('myprotocol') >= 0) { const response = { statusCode: 200, headers: { "Sec-WebSocket-Protocol" : "myprotocol" } }; return response; } } } const response = { statusCode: 400 }; return response; }; function toLowerCaseProperties(obj) { var wrapper = {}; for (var key in obj) { wrapper[key.toLowerCase()] = obj[key]; } return wrapper; }

Anda dapat menggunakan wscatuntuk menguji apakah API Anda mengizinkan koneksi hanya jika klien meminta subprotokol yang didukung API Anda. Perintah berikut menggunakan -s bendera untuk menentukan subprotokol selama koneksi.

Perintah berikut mencoba koneksi dengan subprotokol yang tidak didukung. Karena klien menentukan chat1 subprotokol, integrasi Lambda mengembalikan kesalahan 400, dan koneksi tidak berhasil.

wscat -c wss://api-id.execute-api.region.amazonaws.com/beta -s chat1 error: Unexpected server response: 400

Perintah berikut mencakup subprotokol yang didukung dalam permintaan koneksi. Integrasi Lambda memungkinkan koneksi.

wscat -c wss://api-id.execute-api.region.amazonaws.com/beta -s chat1,myprotocol connected (press CTRL+C to quit)

Untuk mempelajari lebih lanjut tentang menjalankan WebSocket API, lihatMemanggil API WebSocket .