Gunakan @connections perintah di layanan backend Anda - APIGerbang Amazon

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

Gunakan @connections perintah di layanan backend Anda

Layanan backend Anda dapat menggunakan permintaan HTTP WebSocket koneksi berikut untuk mengirim pesan callback ke klien yang terhubung, mendapatkan informasi koneksi, atau memutuskan sambungan klien.

penting

Permintaan ini menggunakan otorisasi IAM, jadi Anda harus menandatanganinya dengan Sigv4 (SigV4). Untuk melakukan ini, Anda dapat menggunakan API Gateway Management API. Untuk informasi lebih lanjut, lihat ApiGatewayManagementApi.

Pada perintah berikut, Anda perlu mengganti {api-id} dengan ID API yang sebenarnya, yang ditampilkan di konsol API Gateway atau dikembalikan oleh perintah AWS CLI create-api. Anda harus membuat koneksi sebelum menggunakan perintah ini.

Untuk mengirim pesan callback ke klien, gunakan:

POST https://{api-id}.execute-api.us-east-1.amazonaws.com/{stage}/@connections/{connection_id}

Anda dapat menguji permintaan ini dengan menggunakan Postman atau dengan memanggil awscurl seperti pada contoh berikut:

awscurl --service execute-api -X POST -d "hello world" https://{prefix}.execute-api.us-east-1.amazonaws.com/{stage}/@connections/{connection_id}

Anda perlu mengkodekan URL perintah seperti pada contoh berikut:

awscurl --service execute-api -X POST -d "hello world" https://aabbccddee.execute-api.us-east-1.amazonaws.com/prod/%40connections/R0oXAdfD0kwCH6w%3D

Untuk mendapatkan status koneksi terbaru dari klien, gunakan:

GET https://{api-id}.execute-api.us-east-1.amazonaws.com/{stage}/@connections/{connection_id}

Untuk memutuskan sambungan klien, gunakan:

DELETE https://{api-id}.execute-api.us-east-1.amazonaws.com/{stage}/@connections/{connection_id}

Anda dapat membuat URL callback secara dinamis dengan menggunakan $context variabel dalam integrasi Anda. Misalnya, jika Anda menggunakan integrasi proxy Lambda dengan fungsi Node.js Lambda, Anda dapat membuat URL dan mengirim pesan ke klien yang terhubung sebagai berikut:

import { ApiGatewayManagementApiClient, PostToConnectionCommand, } from "@aws-sdk/client-apigatewaymanagementapi"; export const handler = async (event) => { const domain = event.requestContext.domainName; const stage = event.requestContext.stage; const connectionId = event.requestContext.connectionId; const callbackUrl = `https://${domain}/${stage}`; const client = new ApiGatewayManagementApiClient({ endpoint: callbackUrl }); const requestParams = { ConnectionId: connectionId, Data: "Hello!", }; const command = new PostToConnectionCommand(requestParams); try { await client.send(command); } catch (error) { console.log(error); } return { statusCode: 200, }; };

Saat mengirim pesan panggilan balik, fungsi Lambda Anda harus memiliki izin untuk memanggil API Gateway Management API. Anda mungkin menerima kesalahan yang berisi GoneException jika Anda memposting pesan sebelum koneksi dibuat, atau setelah klien terputus.