Desidero risolvere gli errori "410 GoneException" quando invio un messaggio sulla mia API WebSocket di Gateway Amazon API.
Breve descrizione
Potresti ricevere l'errore "410 GoneException" per i seguenti motivi:
- È stato inviato un messaggio all'API WebSocket prima che la connessione fosse stabilita
- La connessione è stata interrotta o non esiste
- Il client si è disconnesso e quindi ha provato a riconnettersi utilizzando lo stesso connectionId
- Il connectionId non è valido
Nota: per le API WebSocket, è necessario il connectionId per inviare una risposta di callback dal backend.
Risoluzione
Per risolvere gli errori delle API WebSocket, attiva Amazon CloudWatch Logs. Per Livello di log, scegli Info in modo da generare i log di esecuzione per tutte le richieste. I log di esecuzione contengono informazioni che è possibile utilizzare per identificare e risolvere la maggior parte degli errori delle API. Ad esempio:
Per ulteriori informazioni, consulta Formati di log di CloudWatch per API Gateway.
Per stabilire la connessione, utilizza ApiGatewayManagementApi di AWS SDK per chiamare l'operazione getConnection prima di inviare messaggi alle API WebSocket.
Non effettuare la richiesta postToConnection dalla funzione Lambda integrata con la tua route $connect. Per inviare un messaggio dopo aver stabilito la connessione del client, completa i seguenti passaggi:
- Crea una funzione Lambda figlio richiamata in modo asincrono dalla funzione padre.
- Avvia una nuova connessione. Quindi viene richiamata la route $connect e la funzione padre richiama la funzione figlio passando il connectionId.
- La funzione Lambda figlio riceve il connectionId e chiama l'operazione getConnection per verificare che la connessione sia valida.
- Invia un messaggio utilizzando il metodo postToConnection.
Informazioni correlate
Panoramica delle API WebSocket in API Gateway
Come posso passare un connectionID o un token personalizzato all'integrazione del collegamento VPC come intestazione per le API WebSocket di API Gateway?