Mengelola pengguna yang terhubung dan aplikasi klien: $connect dan $disconnect rute - APIGerbang Amazon

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

Mengelola pengguna yang terhubung dan aplikasi klien: $connect dan $disconnect rute

Bagian berikut menjelaskan cara menggunakan $connect dan $disconnect rute untuk Anda WebSocket API.

$connectRute

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/AuthZakan 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. AWS layanan

Untuk meneruskan informasi koneksi menggunakan integrasi proxy

Anda dapat mengakses informasi koneksi dari integrasi proxy Lambda dalam acara tersebut. Gunakan AWS Lambda fungsi lain AWS layanan atau untuk memposting ke koneksi.

Fungsi Lambda berikut menunjukkan cara menggunakan requestContext objek untuk mencatat ID koneksi, nama domain, nama panggung, dan string kueri.

Node.js
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} };
Python
import json import logging logger = logging.getLogger() logger.setLevel("INFO") def lambda_handler(event, context): connectId = event["requestContext"]["connectionId"] domainName = event["requestContext"]["domainName"] stageName = event["requestContext"]["stage"] qs = event['queryStringParameters'] connectionInfo = { 'Connection ID': connectId, 'Domain Name': domainName, 'Stage Name': stageName, 'Query Strings': qs} logging.info(connectionInfo) 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.

$disconnectRute

$disconnectRute 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.