Quiero solucionar los errores «410 GoneException» cuando publico un mensaje en mi API de WebSocket de Amazon API Gateway.
Descripción corta
Es posible que reciba el error «410 GoneException» por los siguientes motivos:
- Se ha publicado un mensaje en la API de WebSocket antes de establecer la conexión
- La conexión se ha interrumpido o no existe
- El cliente se ha desconectado y, a continuación, ha intentado volver a conectarse con el mismo connectionId
- El connectionID no es válido
Nota: Para las API de WebSocket, se requiere el connectionId para enviar una respuesta de devolución de llamada desde el backend.
Resolución
Para solucionar los errores de la API de WebSocket, active Registros de Amazon CloudWatch. En Nivel de registro, elija Info para 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 las API. Por ejemplo:
Para obtener más información, consulte Formatos de registro de CloudWatch para API Gateway.
Para establecer la conexión, utilice ApiGatewayManagementApi del AWS SDK para llamar a la operación getConnection antes de publicar mensajes en las API de WebSocket.
No integre la solicitud postToConnection de la función de Lambda con su ruta $connect. Para publicar un mensaje después de establecer la conexión con el cliente, siga estos pasos:
- Cree una función de Lambda secundaria que la función principal invoque de forma asincrónica.
- Inicie una nueva conexión. A continuación, se invoca la ruta $connect y la función principal invoca la función secundaria pasando el connectionId.
- La función secundaria de Lambda recibe el connectionId y llama a la operación getConnection para comprobar que la conexión es válida.
- Envíe un mensaje con el método postToConnection.
Información relacionada
Descripción general de las API de WebSocket en API Gateway
¿Cómo transfiero un connectionId o un token personalizado a la integración de enlaces de VPC como encabezado para las API de WebSocket de API Gateway?