Utiliser WebSockets

Cette page s'applique à Apigee et à Apigee hybrid.

Consultez la documentation d'Apigee Edge.

Cet article explique comment utiliser WebSockets avec Apigee et Apigee Hybrid.

Présentation

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 en duplex intégral 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. Une requête de mise à niveau envoyée à un point de terminaison de proxy d'API 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). Une fois qu'aucune règle ne s'exécute, 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 ou jeton OAuth.
  • Le point de terminaison du proxy reçoit une requête avec une clé API ou un jeton OAuth expiré ou non valide.
  • La connexion WebSockets expire.

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 :

Requête renvoyant l'état 101 dans l'outil Debug.

Dans le tableau de bord d'analyse Apigee, 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 backend cible simple qui est déployée dans votre cluster Kubernetes.