Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Klien dapat menggunakan Sec-WebSocket-Protocol
bidang untuk meminta WebSocket subprotokol$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 wscat
-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 chat1error: 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,myprotocolconnected (press CTRL+C to quit)
Untuk mempelajari lebih lanjut tentang pemanggilan WebSocket APIs, lihatMemohon WebSocket APIs.