Zelfstudie: Berichten publiceren en abonneren met webSocket-API en Azure Web PubSub-service-SDK

Met de Azure Web PubSub-service kunt u eenvoudig realtime webberichtentoepassingen bouwen. In deze zelfstudie leert u hoe u zich abonneert op de service met behulp van webSocket-API en berichten publiceert met behulp van de Web PubSub-service-SDK.

In deze zelfstudie leert u het volgende:

  • Een Web PubSub-service-exemplaar maken
  • Genereer de volledige URL om de WebSocket-verbinding tot stand te brengen
  • Een Web PubSub-abonneeclient maken voor het ontvangen van berichten met behulp van het standaard WebSocket-protocol
  • Een Web PubSub-uitgeverclient maken voor het publiceren van berichten met behulp van de Web PubSub-service-SDK

Vereisten

  • Maak een gratis account voor een Azure-abonnement.
  • Een Bash-opdrachtshell. Gebruik een lokale shell of de Bash-omgeving in Azure Cloud Shell.
  • Als deze wordt uitgevoerd op uw lokale computer , installeert u de Azure CLI.

U kunt de Windows cmd.exe-opdrachtshell gebruiken in plaats van een Bash-shell om de opdrachten in deze zelfstudie uit te voeren.

Als u het project op een lokale computer maakt, moet u de afhankelijkheden installeren voor de taal die u gebruikt:

Uw omgeving voorbereiden

Azure CLI instellen voor lokale ontwikkeling

Volg deze stappen om Azure CLI en uw projectomgeving in te stellen.

  1. Open een opdrachtshell.

  2. Voer een upgrade uit naar de nieuwste versie van de Azure CLI.

    az upgrade
    
  3. Installeer de Azure CLI-extensie voor Web PubSub.

    az extension add --name webpubsub
    
  4. Meld u aan bij Azure CLI. Voer na de aanwijzingen uw Azure-referenties in.

    az login
    

Een brongroep maken

Een resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. Gebruik de opdracht az group create om een resourcegroep te maken met de naam myResourceGroup op de eastus locatie.

az group create --name myResourceGroup --location EastUS

1. Een Azure Web PubSub-exemplaar maken

Een Web PubSub-exemplaar maken

Gebruik de azure CLI az webpubsub create command om een Web PubSub te maken in de resourcegroep die u hebt gemaakt. Met de volgende opdracht maakt u een gratis Web PubSub-resource onder de resourcegroep myResourceGroup inEastUS:

Elke Web PubSub-resource moet een unieke naam hebben. Vervang <uw unieke resourcenaam door de naam van uw Web PubSub-exemplaar> in de volgende opdracht.

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

In de uitvoer van deze opdracht ziet u eigenschappen van de zojuist gemaakte resource. Let op de onderstaande twee eigenschappen:

  • name: De Web PubSub-naam die u hebt opgegeven in de --name bovenstaande parameter.
  • hostName: In het voorbeeld is <your-unique-resource-name>.webpubsub.azure.com/de hostnaam .

Op dit moment is uw Azure-account de enige die gemachtigd is om bewerkingen uit te voeren op deze nieuwe resource.

De verbindingsreeks ophalen

Belangrijk

Een verbindingsreeks bevat de autorisatiegegevens die nodig zijn voor uw toepassing voor toegang tot de Azure Web PubSub-service. De toegangssleutel in de verbindingsreeks is vergelijkbaar met een hoofdwachtwoord voor uw service. In productieomgevingen moet u altijd voorzichtig zijn met het beveiligen van uw toegangssleutels. Gebruik Azure Key Vault om uw sleutels veilig te beheren en te roteren. Vermijd het distribueren van toegangssleutels naar andere gebruikers, het coderen ervan of het opslaan van ze ergens in tekst zonder opmaak die toegankelijk is voor anderen. Draai uw sleutels als u denkt dat ze mogelijk zijn aangetast.

Gebruik de opdracht Azure CLI az webpubsub key om de Verbinding maken ionString van de service op te halen. Vervang de <your-unique-resource-name> tijdelijke aanduiding door de naam van uw Azure Web PubSub-exemplaar.

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

Kopieer de verbindingsreeks om later te gebruiken.

Een abonneeclient maken

Clients maken verbinding met de Azure Web PubSub-service via het standaard WebSocket-protocol met behulp van JSON Web Token-verificatie (JWT ). De service-SDK biedt helpermethoden voor het genereren van het token. In deze zelfstudie genereert de abonnee het token rechtstreeks vanuit Verbinding maken ionString. In echte toepassingen verwerkt een toepassing aan de serverzijde meestal de verificatie-/autorisatiewerkstroom. Zie de zelfstudie Een chat-app bouwen voor een beter begrip van de werkstroom.

  1. Maak eerst een projectmap met de naam subscriber van dit project en installeer de vereiste afhankelijkheden:

    • Het pakket Websocket.Client is een pakket van derden dat WebSocket-verbindingen ondersteunt. U kunt elke API/bibliotheek gebruiken die ondersteuning biedt voor WebSocket.
    • Het SDK-pakket Azure.Messaging.WebPubSub helpt bij het genereren van het JWT-token.
    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. Vervang de code in de Program.cs code door de volgende code die verbinding maakt met de 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();
                }
            }
        }
    }
    
    

    De code maakt een WebSocket-verbinding die is verbonden met een hub in Web PubSub. Een hub is een logische eenheid in Web PubSub waar u berichten naar een groep clients kunt publiceren. De belangrijkste concepten bevatten de gedetailleerde uitleg over de termen die worden gebruikt in Web PubSub.

    De Web PubSub-service maakt gebruik van JSON Web Token-verificatie (JWT ). De voorbeeldcode gebruikt WebPubSubServiceClient.GetClientAccessUri() in de Web PubSub SDK om een URL te genereren naar de service die de volledige URL met een geldig toegangstoken bevat.

    Nadat de verbinding tot stand is gebracht, ontvangt uw client berichten via de WebSocket-verbinding. De client gebruikt client.MessageReceived.Subscribe(msg => ...)); om te luisteren naar binnenkomende berichten.

  3. Als u de abonnee wilt starten, voert u de volgende opdracht uit, waarbij u <Web-PubSub-connection-string> de verbindingsreeks die u eerder hebt gekopieerd, vervangt:

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

2. Berichten publiceren met behulp van service-SDK

Maak een uitgever met behulp van de Azure Web PubSub SDK om een bericht te publiceren naar de verbonden client. Voor dit project moet u een andere opdrachtshell openen.

  1. Maak eerst een projectmap met de naam publisher en installeer de vereiste afhankelijkheden:

    mkdir publisher
    cd publisher
    dotnet new console
    dotnet add package Azure.Messaging.WebPubSub
    
  2. Werk het Program.cs bestand bij om de WebPubSubServiceClient klasse te gebruiken en berichten naar de clients te verzenden.

    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);
            }
        }
    }
    
    

    De SendToAllAsync() oproep verzendt gewoon een bericht naar alle verbonden clients in de hub.

  3. Verzend een bericht door de volgende opdracht uit te voeren. Vervang <Web-PubSub-connection-string> door de verbindingsreeks die u eerder hebt gekopieerd.

    dotnet run <Web-PubSub-connection-string> "myHub1" "Hello World"
    
  4. Controleer de opdrachtshell van de abonnee om te zien dat het bericht is ontvangen:

    Message received: Hello World
    

Opschonen

U kunt de resources die u in deze quickstart hebt gemaakt verwijderen door de resourcegroep met deze resources te verwijderen.

az group delete --name myResourceGroup --yes

Als u niet van plan bent om Azure Cloud Shell te blijven gebruiken, kunt u kosten vermijden door de resourcegroep te verwijderen die het gekoppelde opslagaccount bevat. De resourcegroep heeft de naam cloud-shell-storage-<your-region>. Voer de volgende opdracht uit, waarbij u <CloudShellResourceGroup> de naam van de Cloud Shell-groep vervangt.

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

Let op

Als u resourcegroepen verwijdert, worden alle resources verwijderd, inclusief resources die buiten het bereik van deze zelfstudie zijn gemaakt.

Volgende stappen

In deze zelfstudie krijgt u een basisidee van het maken van verbinding met de Web PubSub-service en het publiceren van berichten naar de verbonden clients.

Bekijk andere zelfstudies voor meer informatie over het gebruik van de service.