Quero solucionar os erros de “410 GoneException” ao publicar uma mensagem na minha API de WebSocket do Amazon API Gateway.
Breve descrição
Você pode receber o erro “410 GoneException” pelos seguintes motivos:
- Uma mensagem foi publicada na API de WebSocket antes de a conexão ser estabelecida
- A conexão foi encerrada ou não existe
- O cliente se desconectou e tentou se reconectar usando o mesmo connectionId
- O ConnectionID não é válido
Observação: para APIs do WebSocket, é necessário o connectionId para enviar uma resposta de retorno de chamada do back-end.
Resolução
Para solucionar erros da API de WebSocket, ative o Amazon CloudWatch Logs. Em Nível de log, selecione Info para gerar logs de execução para todas as solicitações. Os logs de execução contêm informações que é possível usar para identificar e solucionar a maioria dos erros de API. Por exemplo:
Para mais informações, consulte Formatos de log do CloudWatch para API Gateway.
Para estabelecer sua conexão, use a ApiGatewayManagementAPI do AWS SDK para chamar a operação getConnection antes de publicar mensagens nas APIs de WebSocket.
Não faça a solicitação postToConnection a partir da função do Lambda integrada à sua rota $connect. Para publicar uma mensagem depois que a conexão do cliente for estabelecida, conclua as seguintes etapas:
- Crie uma função secundária do Lambda que seja invocada de forma assíncrona pela função principal.
- Inicie uma nova conexão. Em seguida, a rota $connect é invocada e a função principal invoca a função secundária passando o connectionId.
- A função secundária do Lambda recebe o connectionId e chama a operação getConnection para verificar se a conexão é válida.
- Envie uma mensagem usando o método postToConnection.
Informações relacionadas
Visão geral das APIs de WebSocket no API Gateway
Como faço para passar um connectionId ou um token personalizado para a integração de links de VPC como um cabeçalho para as APIs WebSocket do API Gateway?