Partager via


Tutoriel : publier et s’abonner à des messages à l’aide de l’API WebSocket et du kit de développement logiciel (SDK) du service Azure Web PubSub

Le service Azure Web PubSub vous aide à créer facilement des applications web de messagerie en temps réel. Dans ce tutoriel, vous découvrez comment vous abonner au service en utilisant l’API WebSocket et comment publier des messages en utilisant le Kit de développement logiciel (SDK) du service Web PubSub.

Dans ce tutoriel, vous allez apprendre à :

  • Créer une instance de service Azure Web PubSub
  • Générer l’URL complète pour établir la connexion WebSocket
  • Créer un client abonné Web PubSub pour recevoir des messages en utilisant le protocole WebSocket standard
  • Créer un client éditeur Web PubSub pour publier des messages en utilisant le Kit de développement logiciel (SDK) du service Web PubSub

Prérequis

  • Créez un compte gratuit d’abonnement à Azure.
  • Un interpréteur de commandes Bash. Utilisez un interpréteur de commandes local ou l’environnement Bash dans Azure Cloud Shell.
  • En cas d’exécution sur votre ordinateur local, Installez Azure CLI.

Vous pouvez utiliser l’interpréteur de commandes Windows cmd.exe au lieu d’un interpréteur de commandes Bash pour exécuter les commandes de ce tutoriel.

Si vous créez le projet sur une machine locale, vous devez installer les dépendances pour le langage que vous utilisez :

Important

Des chaînes de connexion brutes sont utilisées dans cet article à des fins de démonstration uniquement.

Une chaîne de connexion contient les informations d’autorisation requises pour que votre application accède au service Azure Web PubSub. La clé d’accès à l’intérieur dans la chaîne de connexion est semblable à un mot de passe racine pour votre service. Dans les environnements de production, protégez toujours vos clés d’accès. Utilisez Azure Key Vault pour gérer et faire pivoter vos clés en toute sécurité, et sécurisez votre connexion avec WebPubSubServiceClient.

Évitez de distribuer des clés d’accès à d’autres utilisateurs, de les coder en dur ou de les enregistrer en texte brut dans un emplacement accessible à d’autres personnes. Effectuez une rotation de vos clés si vous pensez qu’elles ont pu être compromises.

Préparation de votre environnement

Configurer Azure CLI pour le développement local

Effectuez les étapes suivantes pour configurer Azure CLI et l’environnement de votre projet.

  1. Ouvrez un interpréteur de commandes.

  2. Effectuez une mise à niveau vers la dernière version d’Azure CLI.

    az upgrade
    
  3. Installez l’extension Azure CLI pour Web PubSub.

    az extension add --name webpubsub
    
  4. Connectez-vous à Azure CLI. Après les invites, entrez vos informations d’identification Azure.

    az login
    

Créer un groupe de ressources

Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées. Utilisez la commande az group create pour créer un groupe de ressources nommé myResourceGroup à l’emplacement eastus.

az group create --name myResourceGroup --location EastUS

1. Créer une instance Azure Web PubSub

Créer une instance Web PubSub

Pour créer une instance Web PubSub dans le groupe de ressources que vous avez créé, utilisez la commande Azure CLI az webpubsub create. La commande suivante crée une ressource Web PubSub GRATUITE sous le groupe de ressources myResourceGroup dans la zone EastUS :

Chaque ressource Web PubSub doit avoir un nom unique. Remplacez <your-unique-resource-name> par le nom de votre instance Web PubSub dans les commandes suivantes.

az webpubsub create --resource-group myResourceGroup --name <your-unique-resource-name> --location EastUS --sku Free_F1

La sortie de cette commande affiche les propriétés de la ressource que vous venez de créer. Notez les propriétés suivantes :

  • nom : le nom Web PubSub que vous avez fourni dans le paramètre --name ci-dessus.
  • Nom d’hôte : dans l’exemple, le nom d’hôte est <your-unique-resource-name>.webpubsub.azure.com/.

À ce stade, votre compte Azure est le seul autorisé à effectuer des opérations sur cette nouvelle ressource.

Obtenir la chaîne de connexion

Utilisez la commande Azure CLI az webpubsub key pour obtenir la valeur ConnectionString du service. Remplacez l’espace réservé <your-unique-resource-name> par le nom de votre instance Azure Web PubSub.

az webpubsub key show --resource-group myResourceGroup --name <your-unique-resource-name> --query primaryConnectionString --output tsv

Copiez la chaîne de connexion à utiliser plus tard.

Créer un client abonné

Les clients se connectent au service Azure Web PubSub via le protocole WebSocket standard à l’aide de l’authentification JSON Web Token (JWT). Le kit de développement logiciel (SDK) du service fournit des méthodes d’assistance pour générer le jeton. Dans ce tutoriel, l’abonné génère directement le jeton à partir de ConnectionString. Généralement, dans les applications réelles, une application côté serveur gère le flux de travail d’authentification/autorisation. Pour mieux comprendre le flux de travail, essayez le tutoriel Générer une application de conversation.

Des chaînes de connexion brutes sont utilisées dans cet article à des fins de démonstration uniquement. Dans les environnements de production, protégez toujours vos clés d’accès. Utilisez Azure Key Vault pour gérer et faire pivoter vos clés en toute sécurité, et sécurisez votre connexion avec WebPubSubServiceClient.

  1. Tout d’abord, créez un répertoire de projet appelé subscriber pour ce projet et installez les dépendances requises :

    • Le package Websocket.Client est un package tiers qui prend en charge les connexions WebSocket. Vous pouvez utiliser n’importe quelle API ou bibliothèque qui prend en charge WebSocket.
    • Le package du kit de développement logiciel (SDK) Azure.Messaging.WebPubSub permet de générer le jeton JWT.
    mkdir subscriber
    cd subscriber
    dotnet new console
    dotnet add package Websocket.Client --version 4.3.30
    dotnet add package Azure.Messaging.WebPubSub --version 1.0.0
    
  2. Remplacez le code dans le fichier Program.cs par le code suivant, qui se connecte au service :

    using System;
    using System.Threading.Tasks;
    
    using Azure.Messaging.WebPubSub;
    
    using Websocket.Client;
    
    namespace subscriber
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                if (args.Length != 2)
                {
                    Console.WriteLine("Usage: subscriber <connectionString> <hub>");
                    return;
                }
                var connectionString = args[0];
                var hub = args[1];
    
                // Either generate the URL or fetch it from server or fetch a temp one from the portal
                var serviceClient = new WebPubSubServiceClient(connectionString, hub);
                var url = serviceClient.GetClientAccessUri();
    
                using (var client = new WebsocketClient(url))
                {
                    // Disable the auto disconnect and reconnect because the sample would like the client to stay online even no data comes in
                    client.ReconnectTimeout = null;
                    client.MessageReceived.Subscribe(msg => Console.WriteLine($"Message received: {msg}"));
                    await client.Start();
                    Console.WriteLine("Connected.");
                    Console.Read();
                }
            }
        }
    }
    
    

    Le code crée une connexion WebSocket qui est connectée à un hub dans Web PubSub. Le hub est une unité logique dans Web PubSub où vous pouvez publier des messages sur un groupe de clients. Les concepts clés contiennent une explication détaillée sur les termes utilisés dans Web PubSub.

    Le service Web PubSub utilise l’authentification JWT (JSON Web Token). L’exemple de code utilise WebPubSubServiceClient.GetClientAccessUri() dans le Kit de développement logiciel (SDK) Web PubSub pour générer une URL pour le service qui contient l’URL complète avec un jeton d’accès valide.

    Une fois la connexion établie, votre client reçoit des messages via la connexion WebSocket. Le client utilise client.MessageReceived.Subscribe(msg => ...)); pour écouter les messages entrants.

  3. Pour démarrer l’abonné, exécutez la commande pour remplacer <Web-PubSub-connection-string> par la chaîne de connexion que vous avez copiée précédemment :

    dotnet run <Web-PubSub-connection-string> "myHub1"
    

2. Publier des messages à l’aide du Kit de développement logiciel (SDK) de service

Créez un éditeur à l’aide du Kit de développement logiciel (SDK) Azure Web PubSub pour publier un message sur le client connecté. Pour ce projet, vous devez ouvrir un autre interpréteur de commandes.

  1. Tout d’abord, créez un répertoire de projet appelé publisher et installez les dépendances requises :

    mkdir publisher
    cd publisher
    dotnet new console
    dotnet add package Azure.Messaging.WebPubSub
    
  2. Mettez à jour le fichier Program.cs de façon à utiliser la classe WebPubSubServiceClient et à envoyer des messages aux clients.

    using System;
    using System.Threading.Tasks;
    using Azure.Messaging.WebPubSub;
    
    namespace publisher
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                if (args.Length != 3) {
                    Console.WriteLine("Usage: publisher <connectionString> <hub> <message>");
                    return;
                }
                var connectionString = args[0];
                var hub = args[1];
                var message = args[2];
    
                // Either generate the token or fetch it from server or fetch a temp one from the portal
                var serviceClient = new WebPubSubServiceClient(connectionString, hub);
                await serviceClient.SendToAllAsync(message);
            }
        }
    }
    
    

    L’appel SendToAllAsync() envoie simplement un message à tous les clients connectés dans le hub.

  3. Envoyez un message en exécutant la commande suivante. Remplacez <Web-PubSub-connection-string> par la chaîne de connexion que vous avez copiée précédemment.

    dotnet run <Web-PubSub-connection-string> "myHub1" "Hello World"
    
  4. Vérifiez que l’interpréteur de commandes de l’abonné reçoit le message :

    Message received: Hello World
    

Nettoyage

Vous pouvez supprimer les ressources que vous avez créées dans ce guide de démarrage rapide en supprimant le groupe de ressources qui les contient.

az group delete --name myResourceGroup --yes

Si vous n’envisagez pas de continuer à utiliser Azure Cloud Shell, vous pouvez éviter d’accumuler des coûts en supprimant le groupe de ressources qui contient le compte de stockage associé. Le groupe de ressources est nommé cloud-shell-storage-<your-region>. Exécutez la commande suivante en remplaçant <CloudShellResourceGroup> par le nom du groupe Cloud Shell.

az group delete --name <CloudShellResourceGroup> --yes

Attention

La suppression de groupes de ressources supprime toutes les ressources, y compris les ressources créées en dehors de l’étendue de ce didacticiel.

Étapes suivantes

Ce tutoriel vous donne une idée de base de la façon de se connecter au service Web PubSub et de publier des messages sur les clients connectés.

Pour plus d’informations sur l’utilisation du service, consultez les autres didacticiels.