Présentation des API WebSocket dans API Gateway
Dans API Gateway, vous pouvez créer une API WebSocket en tant que frontend avec état pour un service AWS (tel que Lambda ou DynamoDB) ou pour un point de terminaison HTTP. L’API WebSocket appelle votre serveur principal sur la base du contenu des messages qu’il reçoit des applications clientes.
Contrairement à une API REST, qui reçoit des demandes et y répond, une API WebSocket prend en charge une communication bidirectionnelle entre les applications clientes et votre serveur principal. Le serveur principal peut envoyer des messages de rappel aux clients connectés.
Dans votre API WebSocket, les messages JSON entrants sont dirigés vers des intégrations backend en fonction des routes que vous configurez. (Les messages non JSON sont dirigés vers une route $default
que vous configurez.)
Une route comprend une clé de routage, qui correspond à la valeur attendue une fois qu’une expression de sélection de la route est évaluée. L’attribut routeSelectionExpression
est défini au niveau de l’API. Il spécifie une propriété JSON attendue dans la charge utile du message. Pour plus d’informations sur les expressions de sélection de la route, consultez la section Expressions de sélection de la route.
Par exemple, si vos messages JSON contiennent une propriété action
et que vous souhaitez effectuer différentes actions en fonction de cette propriété, votre expression de sélection de la route peut être ${request.body.action}
. Votre table de routage spécifie l’action à exécuter en mettant en correspondance la valeur de la propriété action
avec les valeurs des clés de routage personnalisées que vous avez définies dans la table.
Utilisation de routes pour une API WebSocket
Trois routes prédéfinies peuvent être utilisées : $connect
, $disconnect
et $default
. De plus, vous pouvez créer des routes personnalisées.
-
API Gateway appelle la route
$connect
lorsqu’une connexion persistante est établie entre le client et une API WebSocket. -
API Gateway appelle la route
$disconnect
lorsque le client ou le serveur se déconnecte de l’API. -
API Gateway appelle une route personnalisée après évaluation de l’expression de sélection de la route par rapport au message si une route correspondante est trouvée ; la correspondance détermine l’intégration appelée.
-
API Gateway appelle la route
$default
si l’expression de sélection de la route ne peut pas être évaluée par rapport au message ou si aucune route correspondante n’est trouvée.
Pour plus d’informations sur les routes $connect
et $disconnect
, consultez la section Gestion des utilisateurs et des applications client connectées : routes $connect et $disconnect.
Pour plus d’informations sur la route $default
et les routes personnalisées, consultez la section Invocation de votre intégration backend à l’aide de la route $default et de routes personnalisées dans API Gateway.
Envoi de données à des applications client connectées
Les services backend peuvent envoyer des données vers des applications client connectées. Vous pouvez envoyer des données en procédant de la façon suivante :
-
Utilisez une intégration pour envoyer une réponse, qui est renvoyée au client par une réponse de routage que vous avez définie.
-
Vous pouvez utiliser l’API
@connections
pour envoyer une demande POST. Pour plus d’informations, consultez Utilisation des commandes @connections dans votre service backend.
Codes d’état des API WebSocket
Les API WebSocket API Gateway utilisent les codes d’état suivants pour les communications entre le serveur et le client, comme décrit dans le registre des numéros de code de fermeture WebSocket
- 1001
-
API Gateway renvoie ce code d’état lorsque le client est inactif pendant 10 minutes ou a atteint la durée maximale de connexion de 2 heures.
- 1003
-
API Gateway renvoie ce code d’état lorsqu’un point de terminaison reçoit un type de médias binaires. Les types de médias binaires ne sont pas pris en charge pour les API WebSocket.
- 1005
API Gateway renvoie ce code d’état si le client envoie un frame de fermeture sans code de fermeture.
- 1006
API Gateway renvoie ce code d’état en cas de fermeture inattendue de la connexion (fermeture de la connexion TCP sans frame de fermeture WebSocket, par exemple).
- 1008
-
API Gateway renvoie ce code d’état lorsqu’un point de terminaison reçoit un trop grand nombre de demandes d’un client en particulier.
- 1009
-
API Gateway renvoie ce code d’état lorsqu’un point de terminaison reçoit un message trop volumineux pour être traité.
- 1011
API Gateway renvoie ce code d’état en cas d’erreur interne du serveur.
- 1012
-
API Gateway renvoie ce code d’état si le service redémarre.