Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Gérez les utilisateurs connectés, les applications clientes $connect
et $disconnect
les itinéraires
La section suivante décrit comment utiliser les $disconnect
itinéraires $connect
et pour votre WebSocket API.
Rubriques
Route $connect
Les applications clientes se connectent à vous WebSocket API en envoyant une demande de WebSocket mise à niveau. Si la demande aboutit, la route $connect
est exécutée pendant l'établissement de la connexion.
Comme il s'agit d'une connexion dynamique, vous pouvez configurer l'autorisation uniquement sur l'$connect
itinéraire. WebSocket AuthN
/ne AuthZ
sera effectué qu'au moment de la connexion.
Tant que l'exécution de l'intégration associée à la route $connect
n'est pas terminée, la demande est en attente de mise à niveau et la connexion n'est pas établie. Si la demande $connect
échoue (par exemple, en raison de l'échec de AuthN
/AuthZ
ou de l'intégration), la connexion ne sera pas établie.
Note
Si l'autorisation échoue sur $connect
, la connexion ne sera pas établie, et le client recevra une réponse 401
ou 403
.
La configuration d'une intégration pour $connect
est facultative. Vous devez envisager la configuration d'une intégration $connect
dans les cas suivants :
-
Vous souhaitez permettre aux clients de spécifier des sous-protocoles à l'aide du champ
Sec-WebSocket-Protocol
. Pour obtenir un exemple de code, veuillez consulter Configurer un $connect itinéraire qui nécessite un WebSocket sous-protocole. -
Vous souhaitez être averti lorsque des clients se connectent.
-
Vous souhaitez limiter les connexions ou contrôler qui se connecte.
-
Vous souhaitez que votre backend renvoie des messages aux clients à l'aide d'un rappelURL.
-
Vous souhaitez stocker chaque ID de connexion et d'autres informations dans une base de données (par exemple, Amazon DynamoDB).
Transmission des informations de connexion depuis l'itinéraire $connect
Vous pouvez utiliser des intégrations proxy et non proxy pour transmettre les informations de la route $connect
vers une base de données ou un autre Service AWS.
Pour transmettre les informations de connexion en utilisant une intégration de proxy
Vous pouvez accéder aux informations de connexion d'une intégration proxy Lambda dans l'événement. Utilisez une autre AWS Lambda fonction Service AWS ou une autre pour publier sur la connexion.
La fonction Lambda suivante montre comment utiliser l'objet requestContext
pour enregistrer l'ID de connexion, le nom de domaine, le nom d'étape et les chaînes de requête dans un journal.
Pour transmettre les informations de connexion en utilisant une intégration sans proxy
-
Vous pouvez accéder aux informations de connexion avec une intégration non proxy. Configurez la demande d'intégration et fournissez un modèle de WebSocket API demande. Le modèle de mappage Velocity Template Language (VTL)
suivant fournit une demande d'intégration. Cette demande envoie les informations suivantes à une intégration non proxy : -
ID de connexion
-
Nom de domaine
-
Nom de l'environnement
-
Chemin
-
En-têtes
-
Chaînes de requête
Cette demande envoie l'ID de connexion, le nom de domaine, le nom d'étape, les chemins, les en-têtes et les chaînes de requête à une intégration non proxy.
{ "connectionId": "$context.connectionId", "domain": "$context.domainName", "stage": "$context.stage", "params": "$input.params()" }
Pour obtenir plus d'informations sur la configuration des transformations de données, consultez Transformations de données pour WebSocket les API dans API Gateway.
Pour terminer la demande d'intégration, définissez
StatusCode: 200
pour la réponse d'intégration. Pour en savoir plus sur la configuration d'une réponse d'intégration, consultez Configuration d'une réponse d'intégration à l'aide de la console API Gateway. -
Route $disconnect
La route $disconnect
est exécutée une fois que la connexion est fermée.
La connexion peut être fermée par le serveur ou par le client. Comme la connexion est déjà fermée lorsqu'elle est exécutée, $disconnect
est un événement exécuté au mieux de ce qui est possible. APIGateway fera de son mieux pour intégrer l'$disconnect
événement à votre intégration, mais ne peut garantir la livraison.
Le backend peut initier la déconnexion en utilisant le. @connections
API Pour plus d’informations, consultez Utilisation des commandes @connections dans votre service backend.