Share via


É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 une application ASP.NET Core SignalR ou ASP.NET SignalR pour qu’elle fonctionne avec SignalR Service, en modifiant quelques lignes de code.

Le diagramme décrit l’architecture type quand 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 les clients directement.

Avec SignalR Service, le serveur d’applications n’accepte plus les connexions clientes persistantes. Au lieu de cela :

  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 requêtes 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, le SDK Azure SignalR Service ouvre cinq connexions WebSocket par hub à SignalR Service.
  • Pour ASP.NET SignalR, le SDK Azure SignalR Service ouvre cinq connexions WebSocket par hub à SignalR Service et une connexion WebSocket par application.

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

Pendant que le serveur d’applications est connecté à SignalR Service, le service Azure SignalR peut envoyer des messages d’équilibrage de charge au serveur. Ensuite, le SDK démarre les nouvelles connexions de serveur au service pour de meilleures performances. Les messages en provenance et à destination des clients sont multiplexés dans ces connexions.

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

Connexions clientes

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

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

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

    • Pour ASP.NET Core SignalR, une réponse de redirection standard 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 standard ressemble à ceci :
      {
          "ProtocolVersion":"2.0",
          "RedirectUrl":"https://test.service.signalr.net/aspnetclient",
          "AccessToken":"<a typical JWT token>"
      }
      
  3. Une fois la réponse de redirection reçue, le client 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

Quand un client est connecté à SignalR Service, le runtime du service trouve une connexion serveur pour desservir ce client.

  • Cette étape ne se produit qu’une seule fois et constitue un mappage un-à-un entre la connexion client et 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 ni ne stocke 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 se soucier des connexions clientes.

Étapes suivantes

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