Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verbundene Benutzer und Client-Apps verwalten: $connect
und $disconnect
Routen
Im folgenden Abschnitt wird beschrieben, wie Sie die $disconnect
Routen $connect
und für Ihre verwenden WebSocket API.
Themen
Die Route $connect
Client-Apps stellen eine Verbindung zu Ihrem her, WebSocket API indem sie eine WebSocket Upgrade-Anfrage senden. Wenn die Anforderung erfolgreich ist, wird die Route $connect
ausgeführt, während die Verbindung hergestellt wird.
Da es sich bei der WebSocket Verbindung um eine statusbehaftete Verbindung handelt, können Sie die Autorisierung nur für die $connect
Route konfigurieren. AuthN
/AuthZ
wird nur zur Verbindungszeit ausgeführt.
Solange die Integration im Zusammenhang mit der Route $connect
noch nicht abgeschlossen wurde, steht die Upgrade-Anforderung noch an und die tatsächliche Verbindung wird nicht hergestellt. Wenn die $connect
-Anforderung fehlschlägt (z. B. aufgrund eines AuthN
/AuthZ
-Fehlers oder eines Integrationsfehlers), wird die Verbindung nicht hergestellt.
Anmerkung
Wenn die Autorisierung für $connect
fehlschlägt, wird keine Verbindung hergestellt, und der Client erhält eine 401
- oder 403
-Antwort.
Das Einrichten einer Integration für $connect
ist optional. Sie sollten die Einrichtung einer $connect
-Integration unter folgenden Umständen erwägen:
-
Sie möchten Clients ermöglichen, Unterprotokolle mithilfe des
Sec-WebSocket-Protocol
-Felds anzugeben. Beispielcode finden Sie unter Richten Sie eine $connect Route ein, für die ein WebSocket Unterprotokoll erforderlich ist. -
Sie möchten benachrichtigt werden, wenn Clients verbunden werden.
-
Wenn Sie Verbindungen drosseln möchten oder wenn Sie steuern möchten, wer eine Verbindung herstellt.
-
Sie möchten, dass Ihr Backend mithilfe eines URL Callbacks Nachrichten an Clients zurücksendet.
-
Sie möchten jede Verbindungs-ID und andere Informationen in einer Datenbank (z. B. Amazon DynamoDB) speichern.
Verbindungsinformationen von der $connect
-Route übergeben
Sie können sowohl Proxy- als auch Nicht-Proxy-Integrationen verwenden, um Informationen von der $connect
-Route an eine Datenbank oder einen anderen AWS-Service zu übergeben.
So übergeben Sie Verbindungsinformationen mithilfe einer Proxy-Integration
In diesem Fall können Sie über eine Lambda-Proxy-Integration auf die Verbindungsinformationen zugreifen. Verwenden Sie eine andere AWS-Service AWS Lambda OR-Funktion, um Beiträge an die Verbindung zu senden.
Die folgende Lambda-Funktion zeigt, wie das requestContext
-Objekt verwendet wird, um die Verbindungs-ID, den Domänennamen, den Stufennamen und die Abfragezeichenfolgen zu protokollieren.
So übergeben Sie Verbindungsinformationen mithilfe einer Nicht-Proxy-Integration
-
Sie können mit einer Nicht-Proxy-Integration auf die Verbindungsinformationen zugreifen. Richten Sie die Integrationsanfrage ein und stellen Sie eine WebSocket API Anforderungsvorlage bereit. Die folgende Zuordnungsvorlage für die Velocity Template Language (VTL)
enthält eine Integrationsanfrage. Diese Anforderung sendet die folgenden Details an eine Nicht-Proxy-Integration: -
Verbindungs-ID
-
Domainname
-
Stufenname
-
Pfad
-
Überschriften
-
Abfragezeichenfolgen
Diese Anforderung sendet die Verbindungs-ID, den Domain-Namen, den Namen der Phase, die Pfade, Header und Abfragezeichenfolgen an eine Nicht-Proxy-Integration.
{ "connectionId": "$context.connectionId", "domain": "$context.domainName", "stage": "$context.stage", "params": "$input.params()" }
Weitere Informationen zum Einrichten von Datenübertragungen finden Sie unterDatentransformationen für WebSocket APIs in API Gateway.
Zum Abschließen der Integrationsanforderung legen Sie die Integrationsantwort
StatusCode: 200
fest. Weitere Informationen zum Einrichten einer Integrationsantwort finden Sie unter Richten Sie mit der API Gateway-Konsole eine Integrationsantwort ein. -
Die Route $disconnect
Die Route $disconnect
wird ausgeführt, nachdem die Verbindung geschlossen wurde.
Die Verbindung kann vom Server oder vom Client geschlossen werden. Da die Verbindung bereits geschlossen ist, wenn sie ausgeführt wird, ist $disconnect
ein "Best Effort"-Ereignis. APIGateway wird sein Bestes tun, um das $disconnect
Ereignis an Ihre Integration weiterzuleiten, kann jedoch die Zustellung nicht garantieren.
Das Backend kann die Unterbrechung der Verbindung einleiten, indem es den verwendet. @connections
API Weitere Informationen finden Sie unter Verwenden der @connections-Befehle in Ihrem Backend-Service.