Éléments internes Azure SignalR Service

Azure SignalR Service repose sur le framework ASP.NET Core SignalR. Il prend également en charge ASP.NET SignalR en réimplémentant le protocole de données d’ASP.NET SignalR sur l’infrastructure ASP.NET Core.

Vous pouvez facilement migrer un ASP.NET Core SignalR ou une application ASP.NET SignalR pour qu’elle fonctionne avec SignalR Service, en modifiant quelques lignes de code.

Le diagramme décrit l’architecture classique lorsque vous utilisez SignalR Service avec votre serveur d’applications.

Les différences par rapport à l’application ASP.NET Core SignalR auto-hébergée sont également abordées.

Architecture

Connexions au serveur d’applications

Un serveur d’applications ASP.NET Core SignalR auto-hébergé écoute et connecte directement les clients.

Avec SignalR Service, le serveur d’applications n’accepte plus les connexions clientes persistantes, à la place :

  1. Un point de terminaison negotiate est exposé par le SDK Azure SignalR Service pour chaque hub.
  2. Le point de terminaison répond aux demandes de négociation du client et redirige les clients vers SignalR Service.
  3. Les clients se connectent à SignalR Service.

Pour plus d’informations, consultez Connexions clientes.

Une fois le serveur d’applications démarré :

  • Pour ASP.NET Core SignalR : Azure SignalR Service SDK ouvre cinq connexions WebSocket par hub à SignalR Service.
  • Pour ASP.NET SignalR : azure SignalR Service SDK ouvre cinq connexions WebSocket par hub à SignalR Service et une par connexion WebSocket d’application.

Le nombre initial de connexions par défaut est 5 et est configurable à l’aide de l’option dans le InitialHubServerConnectionCount Kit de développement logiciel (SDK) SignalR Service. Pour plus d’informations, consultez configuration.

Pendant que le serveur d’applications est connecté au service SignalR, le service Azure SignalR peut envoyer des messages d’équilibrage de charge au serveur. Ensuite, le Kit de développement logiciel (SDK) démarre les nouvelles connexions de serveur au service pour de meilleures performances. Les messages vers et à partir de clients sont multiplexés dans ces connexions.

Les connexions de serveur sont connectées de manière permanente au service SignalR. Si une connexion de serveur est déconnectée en raison d’un problème réseau :

Connexions clientes

Lorsque vous utilisez le service SignalR, les clients se connectent au service au lieu du serveur d’applications. Il existe trois étapes pour établir des connexions persistantes entre le client et le service SignalR.

  1. Un client envoie une demande de négociation au serveur d’applications.

  2. Le serveur d’applications utilise le Kit de développement logiciel (SDK) Azure SignalR Service pour retourner une réponse de redirection contenant l’URL du service SignalR et le jeton d’accès.

    • Pour ASP.NET Core SignalR, une réponse de redirection classique ressemble à ceci :
      {
          "url":"https://test.service.signalr.net/client/?hub=chat&...",
          "accessToken":"<a typical JWT token>"
      }
      
    • Pour ASP.NET SignalR, une réponse de redirection classique ressemble à ceci :
      {
          "ProtocolVersion":"2.0",
          "RedirectUrl":"https://test.service.signalr.net/aspnetclient",
          "AccessToken":"<a typical JWT token>"
      }
      
  3. Une fois que le client reçoit la réponse de redirection, il utilise l’URL et le jeton d’accès pour se connecter à SignalR Service.

Pour en savoir plus sur ASP.NET Core SignalR, consultez Protocoles de transport.

Transmission de données entre le client et le serveur

Lorsqu’un client est connecté au service SignalR, le runtime du service trouve une connexion serveur pour servir ce client.

  • Cette étape ne se produit qu’une seule fois et est un mappage un-à-un entre le client et la connexion au serveur.
  • Le mappage est conservé dans SignalR Service jusqu’à ce que le client ou le serveur se déconnecte.

À ce stade, le serveur d’applications reçoit un événement avec des informations du nouveau client. Une connexion logique au client est créée dans le serveur d’applications. Le canal de données est établi du client au serveur d’applications par le biais de SignalR Service.

SignalR Service transmet les données du client au serveur d’applications d’appairage. Les données du serveur d’applications sont envoyées aux clients mappés.

SignalR Service n’enregistre pas ou ne stocke pas les données client, toutes les données client reçues sont transmises au serveur cible ou aux clients en temps réel.

Azure SignalR Service agit comme une couche de transport logique entre le serveur d’applications et les clients. Toutes les connexions persistantes sont déchargées sur SignalR Service. Par conséquent, le serveur d’applications doit uniquement gérer la logique métier dans la classe hub, sans vous soucier des connexions clientes.

Étapes suivantes

Pour en savoir plus sur les kits SDK Azure SignalR, consultez :