Como soluciono erros “410 GoneException” com as APIs de WebSocket do Amazon API Gateway?

2 minuto de leitura
0

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:

  1. Crie uma função secundária do Lambda que seja invocada de forma assíncrona pela função principal.
  2. 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.
  3. A função secundária do Lambda recebe o connectionId e chama a operação getConnection para verificar se a conexão é válida.
  4. 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?