Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bagian berikut menjelaskan cara menggunakan $connect
dan $disconnect
rute untuk Anda WebSocket API.
$connect
Rute
Aplikasi klien terhubung ke Anda WebSocket API dengan mengirimkan permintaan WebSocket peningkatan. Jika permintaan berhasil, $connect
rute dijalankan saat koneksi sedang dibuat.
Karena WebSocket koneksi adalah koneksi stateful, Anda dapat mengonfigurasi otorisasi pada rute saja. $connect
AuthN
/AuthZ
akan dilakukan hanya pada waktu koneksi.
Sampai eksekusi integrasi yang terkait dengan $connect
rute selesai, permintaan upgrade tertunda dan koneksi aktual tidak akan dibuat. Jika $connect
permintaan gagal (misalnya, karena AuthN
AuthZ
/kegagalan atau kegagalan integrasi), koneksi tidak akan dibuat.
catatan
Jika otorisasi gagal$connect
, koneksi tidak akan dibuat, dan klien akan menerima 401
atau 403
tanggapan.
Menyiapkan integrasi untuk $connect
adalah opsional. Anda harus mempertimbangkan untuk menyiapkan $connect
integrasi jika:
-
Anda ingin mengaktifkan klien untuk menentukan subprotokol dengan menggunakan bidang.
Sec-WebSocket-Protocol
Untuk kode sampel, lihat Siapkan $connect rute yang membutuhkan WebSocket subprotokol. -
Anda ingin diberi tahu saat klien terhubung.
-
Anda ingin membatasi koneksi atau mengontrol siapa yang terhubung.
-
Anda ingin backend Anda mengirim pesan kembali ke klien menggunakan panggilan balik. URL
-
Anda ingin menyimpan setiap ID koneksi dan informasi lainnya ke dalam database (misalnya, Amazon DynamoDB).
Melewati informasi koneksi dari $connect
rute
Anda dapat menggunakan integrasi proxy dan non-proxy untuk meneruskan informasi dari $connect
rute ke database atau lainnya. Layanan AWS
Untuk meneruskan informasi koneksi menggunakan integrasi proxy
Anda dapat mengakses informasi koneksi dari integrasi proxy Lambda dalam acara tersebut. Gunakan AWS Lambda fungsi lain Layanan AWS atau untuk memposting ke koneksi.
Fungsi Lambda berikut menunjukkan cara menggunakan requestContext
objek untuk mencatat ID koneksi, nama domain, nama panggung, dan string kueri.
export const handler = async(event, context) => { const connectId = event["requestContext"]["connectionId"] const domainName = event["requestContext"]["domainName"] const stageName = event["requestContext"]["stage"] const qs = event['queryStringParameters'] console.log('Connection ID: ', connectId, 'Domain Name: ', domainName, 'Stage Name: ', stageName, 'Query Strings: ', qs ) return {"statusCode" : 200} };
Untuk meneruskan informasi koneksi menggunakan integrasi non-proxy
-
Anda dapat mengakses informasi koneksi dengan integrasi non-proxy. Siapkan permintaan integrasi dan berikan templat WebSocket API permintaan. Template pemetaan Velocity Template Language (VTL)
berikut menyediakan permintaan integrasi. Permintaan ini mengirimkan rincian berikut ke integrasi non-proxy: -
ID Koneksi
-
Nama domain
-
Nama panggung
-
Jalur
-
Header
-
String pertanyaan
Permintaan ini mengirimkan ID koneksi, nama domain, nama panggung, jalur, header, dan string kueri ke integrasi non-proxy.
{ "connectionId": "$context.connectionId", "domain": "$context.domainName", "stage": "$context.stage", "params": "$input.params()" }
Untuk informasi selengkapnya tentang pengaturan transformasi data, lihatTransformasi data untuk WebSocket API di API Gateway.
Untuk menyelesaikan permintaan integrasi,
StatusCode: 200
tetapkan respons integrasi. Untuk mempelajari lebih lanjut tentang menyiapkan respons integrasi, lihatMenyiapkan respons integrasi menggunakan konsol API Gateway. -
$disconnect
Rute
$disconnect
Rute dijalankan setelah koneksi ditutup.
Koneksi dapat ditutup oleh server atau oleh klien. Karena koneksi sudah ditutup saat dijalankan, $disconnect
adalah acara upaya terbaik. APIGateway akan mencoba yang terbaik untuk mengirimkan $disconnect
acara ke integrasi Anda, tetapi tidak dapat menjamin pengiriman.
Backend dapat memulai pemutusan dengan menggunakan file. @connections
API Untuk informasi selengkapnya, lihat Gunakan @connections perintah di layanan backend Anda.