gpt4 book ai didi

websocket - 在 AWS ApiGateway 中设置基本的 WebSocket 模拟

转载 作者:行者123 更新时间:2023-12-04 10:59:57 25 4
gpt4 key购买 nike

我正在尝试在 AWS ApiGateway 中设置一个非常简单的 WebSocket 模拟。但是,我尝试过的每一次尝试都会给我一个错误:

13:36:52 (X33uOGUfIAMFq7w=) Extended Request Id: X33uOGUfIAMFq7w=
13:36:52 (X33uOGUfIAMFq7w=) Verifying Usage Plan for request: X33uOGUfIAMFq7w=. API Key: API Stage: redacted/prod
13:36:52 (X33uOGUfIAMFq7w=) API Key authorized because route '$connect' does not require API Key. Request will not contribute to throttle or quota limits
13:36:52 (X33uOGUfIAMFq7w=) Usage Plan check succeeded for API Key and API Stage redacted/prod
13:36:52 (X33uOGUfIAMFq7w=) Starting execution for request: X33uOGUfIAMFq7w=
13:36:52 (X33uOGUfIAMFq7w=) WebSocket Request Route: [$connect]
13:36:52 (X33uOGUfIAMFq7w=) Client [UserAgent: null, SourceIp: redacted] attempts to connect to WebSocket API [redacted].
13:36:52 (X33uOGUfIAMFq7w=) Execution failed due to configuration error: statusCode should be an integer which defined in request template
13:36:52 (X33uOGUfIAMFq7w=) Client [UserAgent: null, SourceIp: redacted] failed to connect to API [redacted].

据我所知,我遵循了最基本的配置。我不需要任何响应或模板,只需要一个简单的 WebSocket 连接,它允许我连接到它而什么都不做,或者响应 ping请求带有 pong最终。

api route $connect

所有授权和 API key 都被禁用。没有设置请求模板或集成响应,因为我不需要它们。同样,我们的目标是能够拥有一个可以连接的愚蠢的 WebSocket。

no request templates

但是,每当我尝试连接到它时,我都会收到 500 错误,上面有关于状态代码的错误日志。
WebSocket connection to 'wss://redacted.execute-api.us-east-1.amazonaws.com/prod' failed: Error during WebSocket handshake: Unexpected response code: 500

最佳答案

使用以下来源(如下),我能够获得一个快速而松散的示例 AWS API Gateway 连接,使用带有 Web 套接字的 MOCK 端点。我相信这可以被更多地清除,以更好地理解不同的请求/响应正文消息和代码..

  • 首先进入API网关,点击创建 API
  • 对于 选择协议(protocol) ,选择 WebSocket
  • 为 API 命名,并使用示例 $request.body.message路由选择表达式
  • 点击 创建 API 按钮
  • 从侧 Pane 中选择新 API,然后单击 路线
  • 选择 $connect 路线
  • 路线概览 ,选择 模拟 端点的单选按钮
  • 对于 请求模板 , 输入表达式(例如使用 200)。
  • 对于 模板 key , 输入一个 key (例如使用 200)
  • 对于直通行为的弹出窗口,选择 否,使用当前设置 暂时
  • 点击 模板 key 200 ,然后输入模板:{"statusCode" : 200}然后单击保存按钮。
    connect integration request
  • 选择 路线概览 返回 $connect 概览页面,然后选择 添加集成响应 按钮
  • 创建 的响应键$默认 ,这将引用 $default 下路线路线
    connect integration response
  • 对于 $disconnect 路线,请重复步骤 7 - 13 对于这条特定路线。
    disconnect route
  • 一旦完成设置 $disconnect 路线,请选择 $default 路线下路线 Pane 。
    default route
  • 创建 集成请求 与对 所做的相同$connect $disconnect (步骤 7 - 11 )
  • 对于 集成响应 $default ,我们将设置路由响应与 略有不同$connect $disconnect 因为这两条路线的响应实际上引用了 $default 各自内部的回复集成响应 .
  • 创建 的响应键$默认
  • 输入 模板选择表达式 (在本例中使用 200)
  • 然后创建一个 模板 key (在本例中使用 200)
  • 点击 模板 key 200 ,然后输入模板:{"statusCode" : 200, "connectionId" : "$context.connectionId"}然后单击保存按钮。
    default response
  • {"connectionId" : "$context.connectionId"}已添加到响应负载中,以显示如何在响应中使用变量来表示连接的实际值。
  • 最后,下行动 下拉菜单,选择 部署 API ,并输入部署阶段名称。这应该生成一个 WebSocket URL,现在可以连接到例如( wss://#######.execute-api.us-east-1.amazonaws.com/Test )
  • 使用 wscat通过 cli,我现在可以连接到我的 WebSocket URL(有关安装 wscat,请参阅下面的源代码):wscat -c wss://#######.execute-api.us-east-1.amazonaws.com/Test cli websocket

  • 来源:
  • https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-how-to-call-websocket-api-wscat.html
  • https://forums.aws.amazon.com/thread.jspa?threadID=299642&tstart=0
  • 关于websocket - 在 AWS ApiGateway 中设置基本的 WebSocket 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55594587/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com