Guide pratique pour envoyer des événements d’Azure SignalR Service à Event Grid
Azure Event Grid est un service de routage d’événements entièrement géré qui permet une consommation d’événements uniforme avec un modèle publication-abonnement. Dans ce guide, vous utilisez l’interface Azure CLI pour créer un Azure SignalR Service, vous abonner aux événements de connexion, puis déployer un exemple d’application web pour recevoir les événements. Enfin, vous pouvez vous connecter et déconnecter et voir la charge utile d’événement dans l’exemple d’application.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Les commandes CLI de cet article sont mises en forme pour le shell Bash. Si vous utilisez un autre shell, comme PowerShell ou l’invite de commandes, il peut être nécessaire d’ajuster en conséquence les caractères de continuation de ligne ou les lignes d’affectation des variables. Cet article utilise des variables pour réduire le nombre de modifications nécessaires des commandes.
Créer un groupe de ressources
Un groupe de ressources Azure est un conteneur logique dans lequel vous déployez et vous gérez vos ressources Azure. La commande az group create crée un groupe de ressources nommé myResourceGroup dans la région eastus. Si vous voulez utiliser un autre nom pour votre groupe de ressources, définissez RESOURCE_GROUP_NAME
sur une autre valeur.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
Créer une ressource SignalR Service
Ensuite, déployez une ressource Azure SignalR Service dans le groupe de ressources avec les commandes suivantes.
SIGNALR_NAME=SignalRTestSvc
az signalr create --resource-group $RESOURCE_GROUP_NAME --name $SIGNALR_NAME --sku Free_F1
Une fois la ressource SignalR Service créée, Azure CLI renvoie une sortie semblable à l’exemple suivant :
{
"externalIp": "13.76.156.152",
"hostName": "clitest.servicedev.signalr.net",
"hostNamePrefix": "clitest",
"id": "/subscriptions/28cf13e2-c598-4aa9-b8c8-098441f0827a/resourceGroups/clitest1/providers/Microsoft.SignalRService/SignalR/clitest",
"location": "southeastasia",
"name": "clitest",
"provisioningState": "Succeeded",
"publicPort": 443,
"resourceGroup": "clitest1",
"serverPort": 443,
"sku": {
"capacity": 1,
"family": null,
"name": "Free_F1",
"size": "F1",
"tier": "Free"
},
"tags": null,
"type": "Microsoft.SignalRService/SignalR",
"version": "1.0"
}
Créer un point de terminaison d’événements
Dans cette section, vous utilisez un modèle Resource Manager qui se trouve dans un référentiel GitHub pour déployer un exemple d’application web prédéfinie sur Azure App Service. Plus tard, vous vous abonnez aux événements Event Grid de votre registre et vous spécifiez cette application comme point de terminaison auquel les événements sont envoyés.
Pour déployer l’exemple d’application, définissez SITE_NAME
avec un nom unique pour votre application web et exécutez les commandes suivantes. Le nom du site doit être unique au sein d’Azure, car il fait partie du nom de domaine complet (FQDN) de l’application web. Dans une section ultérieure, vous accédez au nom de domaine complet de l’application dans un navigateur web pour visualiser les événements de votre registre.
SITE_NAME=<your-site-name>
az deployment group create \
--resource-group $RESOURCE_GROUP_NAME \
--template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
--parameters siteName=$SITE_NAME hostingPlanName=$SITE_NAME-plan
Une fois le déploiement réussi (celui-ci peut prendre quelques minutes), ouvrez votre navigateur, puis accédez à votre application web pour vérifier qu’elle fonctionne :
http://<your-site-name>.azurewebsites.net
Activer le fournisseur de ressources Event Grid
Si vous n’avez jamais utilisé Event Grid dans votre abonnement Azure, vous risquez de devoir inscrire le fournisseur de ressources Event Grid. Exécutez la commande suivante pour enregistrer le fournisseur :
az provider register --namespace Microsoft.EventGrid
L’inscription peut prendre un certain temps. Pour vérifier l'état, exécutez la commande suivante :
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Lorsque
registrationState
estRegistered
, vous êtes prêt à continuer.
S’abonner aux événements du registre
Dans Event Grid, vous vous abonnez à un sujet pour lui indiquer les événements qui vous intéressent, et où les envoyer. La commande az eventgrid event-subscription create
s’abonne au service Azure SignalR que vous avez créé et spécifie l’URL de votre application web comme point de terminaison auquel il doit envoyer des événements. Les variables d’environnement que vous avez renseignées dans les sections précédentes sont réutilisées ici : aucune modification n’est donc nécessaire.
SIGNALR_SERVICE_ID=$(az signalr show --resource-group $RESOURCE_GROUP_NAME --name $SIGNALR_NAME --query id --output tsv)
APP_ENDPOINT=https://$SITE_NAME.azurewebsites.net/api/updates
az eventgrid event-subscription create \
--name event-sub-signalr \
--source-resource-id $SIGNALR_SERVICE_ID \
--endpoint $APP_ENDPOINT
Une fois l’abonnement souscrit, vous obtenez normalement un résultat semblable à l’exemple suivant :
{
"deadLetterDestination": null,
"destination": {
"endpointBaseUrl": "https://$SITE_NAME.azurewebsites.net/api/updates",
"endpointType": "WebHook",
"endpointUrl": null
},
"filter": {
"includedEventTypes": [
"Microsoft.SignalRService.ClientConnectionConnected",
"Microsoft.SignalRService.ClientConnectionDisconnected"
],
"isSubjectCaseSensitive": null,
"subjectBeginsWith": "",
"subjectEndsWith": ""
},
"id": "/subscriptions/28cf13e2-c598-4aa9-b8c8-098441f0827a/resourceGroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/SignalRTestSvc/providers/Microsoft.EventGrid/eventSubscriptions/event-sub-signalr",
"labels": null,
"name": "event-sub-signalr",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"retryPolicy": {
"eventTimeToLiveInMinutes": 1440,
"maxDeliveryAttempts": 30
},
"topic": "/subscriptions/28cf13e2-c598-4aa9-b8c8-098441f0827a/resourceGroups/myResourceGroup/providers/microsoft.signalrservice/signalr/SignalRTestSvc",
"type": "Microsoft.EventGrid/eventSubscriptions"
}
Déclencher des événements du registre
Passez le mode de service en mode Serverless Mode
et établissez une connexion client à la ressource SignalR Service. Vous pouvez prendre l’exemple sans serveur comme référence.
git clone git@github.com:aspnet/AzureSignalR-samples.git
cd samples/Management
# Start the negotiation server
# Negotiation server is responsible for generating access token for clients
cd NegotitationServer
dotnet user-secrets set Azure:SignalR:ConnectionString "<Connection String>"
dotnet run
# Use a separate command line
# Start a client
cd SignalRClient
dotnet run
Afficher des événements du registre
Vous avez maintenant connecté un client à la ressource SignalR Service. Accédez à votre application web de visionneuse Event Grid : vous devriez voir un événement ClientConnectionConnected
. Si vous arrêtez le client, vous verrez également un événement ClientConnectionDisconnected
.