Direkt zum Inhalt

Wie behebe ich den Fehler „410 GoneException“ bei Amazon API Gateway WebSocket-APIs?

Lesedauer: 2 Minute
0

Ich möchte den Fehler „410 GoneException“ beheben, wenn ich eine Nachricht an meine Amazon API Gateway WebSocket-API sende.

Kurzbeschreibung

Möglicherweise erhältst du den Fehler „410 GoneException“ aus den folgenden Gründen:

  • Eine Nachricht wurde an die WebSocket-API gesendet, bevor die Verbindung hergestellt wurde
  • Die Verbindung wurde beendet oder besteht nicht
  • Der Client hat die Verbindung getrennt und dann versucht, mit derselben connectionId erneut eine Verbindung herzustellen
  • Die connectionID ist nicht gültig

Hinweis: Für WebSocket-APIs ist die connectionId erforderlich, um eine Rückrufantwort vom Backend zu senden.

Lösung

Um WebSocket-API-Fehler zu beheben, aktiviere Amazon CloudWatch Logs. Wähle unter Protokollstufe die Option Info aus, um Ausführungsprotokolle für alle Anforderungen zu generieren. Ausführungsprotokolle enthalten Informationen, mit denen du die meisten API-Fehler identifizieren und beheben kannst. Zum Beispiel:

Weitere Informationen findest du unter CloudWatch-Protokollformate für API Gateway.

Um die Verbindung herzustellen, verwende die AWS-SDK-ApiGatewayManagementApi, um die Operation getConnection aufzurufen, bevor du Nachrichten an WebSocket-APIs sendest.

Stelle die postToConnection-Anforderung nicht über die Lambda-Funktion, die in deine $connect-Route integriert ist. Gehe wie folgt vor, um eine Nachricht zu posten, nachdem die Client-Verbindung hergestellt wurde:

  1. Erstelle eine untergeordnete Lambda-Funktion, die asynchron von der übergeordneten Funktion aufgerufen wird.
  2. Initiiere eine neue Verbindung. Dann wird die $connect-Route aufgerufen und die übergeordnete Funktion ruft die untergeordnete Funktion auf, die die connectionId übergibt.
  3. Die untergeordnete Lambda-Funktion empfängt die connectionId und ruft die Operation getConnection auf, um zu überprüfen, ob die Verbindung gültig ist.
  4. Sende eine Nachricht mithilfe der postToConnection-Methode.

Ähnliche Informationen

Überblick über WebSocket-APIs in API Gateway

Wie übergebe ich eine connectionId oder ein benutzerdefiniertes Token an die VPC-Link-Integration als Header für API Gateway WebSocket-APIs?