¿Cómo puedo solucionar los errores 410 GoneException con las API de WebSocket de Amazon API Gateway?

3 minutos de lectura
0

Al intentar enviar un mensaje a mi API de WebSocket de Amazon API Gateway, aparece un error “410 GoneException” similar al siguiente: ... “errorMessage”: “GoneException: 410” ... ¿Cómo se soluciona este problema?

Descripción corta

Es posible que recibas un error “410 GoneException” si:

  • Se ha publicado un mensaje en la API de WebSocket antes de establecer la conexión.
  • La conexión se ha terminado o ya no existe.
  • El cliente se ha desconectado y, a continuación, ha intentado volver a conectarse utilizando el mismo connectionId.

**Nota:**En el caso de las API de WebSocket, el connectionId es necesario para enviar una respuesta de devolución de llamada desde el backend.

Resolución

Para solucionar los errores de la API de WebSocket, active los registros de Amazon CloudWatch.

Nota: En Log level (Nivel de registro), elija INFO a fin de generar registros de ejecución para todas las solicitudes.

Los registros de ejecución contienen información que puede utilizar para identificar y solucionar la mayoría de los errores de la API. Por ejemplo:

Para obtener más información sobre cada tipo de registro consulte Formatos de registro de CloudWatch para API Gateway.

Antes de publicar mensajes en las API de WebSocket, asegúrese de que la conexión se ha establecido llamando a la operación getConnection mediante la API APIGatewayManagementAPI del SDK de AWS.

Evite realizar la solicitud postToConnection desde la función Lambda integrada con la ruta $connect. Por ejemplo, si desea publicar un mensaje después de establecer la conexión con el cliente, haga lo siguiente:

  1. Cree una función Lambda secundaria que la función principal invoque de forma asíncrona.
  2. Al iniciar una nueva conexión, se invoca la ruta $connect y la función principal invoca la función secundaria mediante ConnectionID.
  3. La función Lambda secundaria recibe el ConnectionID y llama a la operación getConnection para comprobar que la conexión es válida. A continuación, el mensaje se envía mediante el método postToConnection.

Información relacionada

Acerca de las API de WebSocket en API Gateway

¿Cómo se puede transmitir un connectionId o un token personalizado a la integración del enlace de la VPC como encabezado para las API de WebSocket en Amazon API Gateway?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año