Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在后端服务中使用 @connections 命令

您后端服务可以使用以下 WebSocket 连接 HTTP 请求向连接的客户端发送回调消息、获取连接信息或断开客户端连接。

重要

这些请求使用 IAM 授权,因此您必须使用签名版本 4 (SigV4) 对其进行签名。

在下面的命令中,您需要将 {api-id} 替换为实际的 API ID,该 ID 显示在 API Gateway 控制台上或由 AWS CLI create-api 命令返回。此外,如果您的 API 位于 us-east-1 以外的区域,则需要替换正确的区域。

要向客户端发送回调消息,请使用:

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

您可以通过使用 Postman 或通过调用 awscurl 来测试此请求,如以下示例所示:

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

您需要对命令进行 URL 编码,如以下示例所示:

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

注意

Postman 不会将 @connections URL 编码,因此,您将需要替换已编码 URL 中的 =@ 字符。

您可以通过在集成中使用 $context 变量来动态构建回调 URL。例如,如果您将 Lambda 代理集成与 Node.js Lambda 函数一起使用,则可以按如下方式构建 URL:

exports.handler = function(event, context, callback) { var domain = event.requestContext.domain; var stage = event.requestContext.stage; var connectionId = event.requestContext.connectionId; var callbackUrl = util.format(util.format('https://%s/%s/@connections/%s', domain, stage, connectionId); // Do a SigV4 and then make the call }