如何使用Amazon API Gateway WebSocket API 解决 410 GoneException 错误?

1 分钟阅读
0

在尝试向我的Amazon API Gateway WebSocket API 发布消息时出现了“410 GoneException”错误,如下所示: ... "errorMessage": "GoneException: 410" ... 如何解决此问题?

简短描述

在以下情况下,您可能会收到“410 GoneException”错误:

  • 在建立连接之前,已向 WebSocket API 发布了一条消息。
  • 连接已终止,或者连接已不存在。
  • 客户端断开连接,然后尝试使用相同的 connectionId 重新连接。

**Note:**对于 WebSocket API,需要使用 connectionId 才能从后端发送回调响应。

解决方法

要解决 WebSocket API 错误,请开启 Amazon CloudWatch Logs

**注意:**对于 Log level(日志级别),选择 INFO(信息)以针对所有请求生成执行日志。

执行日志包含可用于识别和排查大多数 API 错误的信息。例如:

有关每种日志记录类型的更多信息,请参阅 API Gateway 的 CloudWatch 日志格式

在向 WebSocket API 发布消息之前,请确保通过使用 AWS SDK ApiGatewayManagementApi 调用 getConnection 操作来建立连接。

避免从与您的 $connect 路由集成的 Lambda 函数发出 postToConnection 请求。例如,如果您想在建立客户端连接后发布消息,请执行以下操作:

  1. 创建由父函数异步调用的子 Lambda 函数。
  2. 在启动新连接时,调用 $connect 路由,父函数调用传递 connectionId 的子函数。
  3. Lambda 子函数接收 connectionId 并调用 getConnection 操作以验证连接是否有效。然后,使用 postToConnection 方法发送消息。

相关信息

关于 API Gateway 中的 WebSocket API

如何将 connectionId 或自定义令牌作为 Amazon API Gateway WebSocket API 的标头传递给 VPC Link 集成?

AWS 官方
AWS 官方已更新 1 年前