Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d'Apigee Edge.
Dans cette rubrique, nous expliquons comment utiliser WebSockets avec Apigee et Apigee Hybrid.
Introduction
Dans de nombreuses situations, comme les jeux, les communications, les transactions financières et d'autres activités nécessitant un haut débit, les interactions Web doivent avoir lieu en temps réel.
WebSocket est un protocole qui fournit un canal de communication full-duplex entre un client Web et un serveur Web via une connexion TCP unique. Le protocole WebSocket utilise le protocole HTTP pour établir la connexion entre le client et le serveur. Une fois la connexion établie, le client et le serveur utilisent le protocole WebSocket pour envoyer et recevoir des données.
Le protocole et la spécification WebSockets sont gérés par le W3C.
Compatibilité avec WebSockets dans Apigee
Dans Apigee et Apigee hybrid, les groupes d'environnements fournissent un routage vers les environnements et définissent les noms d'hôte sur lesquels les proxys d'API sont exposés. Les groupes d'environnements sont compatibles de manière native avec les protocoles HTTP et WS. Vous n'avez pas besoin de créer de groupe d'environnement spécial ni de configuration particulière pour utiliser WebSockets. Il appartient plutôt au client de demander une mise à niveau de protocole de HTTP vers WS en incluant l'en-tête de requête Upgrade
. Lorsqu'une requête de mise à niveau est envoyée à un point de terminaison de proxy d'API, celui-ci renvoie une réponse 101 Switching Protocols
. D'autres requêtes et réponses sont effectuées de manière bidirectionnelle sur la connexion WebSockets ouverte, jusqu'à ce qu'elle soit fermée.
Compatibilité des règles
Toutes les règles fonctionnent dans un proxy de socket Web jusqu'à la fin du handshake (c'est-à-dire jusqu'à ce que la réponse HTTP 101
soit renvoyée au client). Après cela, aucune règle ne s'exécute, mais les jetons OAuth validés avant le handshake sont toujours reconnus, et la connexion est supprimée si le jeton expire ou est révoqué.
Révoquer la connexion
La connexion WebSockets est fermée dans les cas suivants :
- Le point de terminaison du proxy reçoit une requête sans clé API ni jeton OAuth.
- Le point de terminaison du proxy reçoit une requête avec une clé API ou un jeton OAuth ayant expiré ou non valide.
- La connexion WebSockets arrive à expiration.
Utiliser les données de trace et d'analyse
Dans l'outil Debug, pour chaque connexion WebSockets, une requête affiche un état 101, comme illustré dans la capture d'écran suivante :
Dans le tableau de bord d'Apigee Analytics, le trafic est comptabilisé pour chaque session WebSockets. Le trafic aller et retour qui se produit pendant la session n'apparaît pas dans le tableau de bord.
Exemple d'application WebSockets
Pour en savoir plus, vous pouvez vous référer à une application websocket-sample fonctionnelle sur GitHub. L'exemple montre comment appeler un proxy d'API via une connexion WebSockets. Le proxy appelle une application de backend cible simple qui est déployée dans votre cluster Kubernetes.