Dela via


Självstudie: Publicera och prenumerera på meddelanden med hjälp av WebSocket API och Azure Web PubSub service SDK

Tjänsten Azure Web PubSub hjälper dig att enkelt skapa webbmeddelandeprogram i realtid. I den här självstudien får du lära dig hur du prenumererar på tjänsten med hjälp av WebSocket-API:et och publicerar meddelanden med hjälp av Web PubSub Service SDK.

I den här självstudien lär du dig att:

  • Skapa en Web PubSub-tjänstinstans
  • Generera den fullständiga URL:en för att upprätta WebSocket-anslutningen
  • Skapa en Web PubSub-prenumerantklient för att ta emot meddelanden med standardprotokollet WebSocket
  • Skapa en Web PubSub-utgivarklient för att publicera meddelanden med hjälp av Web PubSub Service SDK

Förutsättningar

  • Skapa ett kostnadsfritt konto i en Azure-prenumeration.
  • Ett Bash-kommandogränssnitt. Använd antingen ett lokalt gränssnitt eller Bash-miljön i Azure Cloud Shell.
  • Om du kör på den lokala datorn installerar du Azure CLI.

Du kan använda Kommandogränssnittet för Windows cmd.exe i stället för ett Bash-gränssnitt för att köra kommandona i den här självstudien.

Om du skapar projektet på en lokal dator måste du installera beroendena för det språk du använder:

Förbered din miljö

Azure CLI-konfiguration för lokal utveckling

Följ de här stegen för att konfigurera Azure CLI och din projektmiljö.

  1. Öppna ett kommandogränssnitt.

  2. Uppgradera till den senaste versionen av Azure CLI.

    az upgrade
    
  3. Installera Azure CLI-tillägget för Web PubSub.

    az extension add --name webpubsub
    
  4. Logga in på Azure CLI. När du följer anvisningarna anger du dina Azure-autentiseringsuppgifter.

    az login
    

Skapa en resursgrupp

En resursgrupp är en logisk container där Azure-resurser distribueras och hanteras. Använd kommandot az group create för att skapa en resursgrupp med namnet myResourceGroupeastus platsen.

az group create --name myResourceGroup --location EastUS

1. Skapa en Azure Web PubSub-instans

Skapa en Web PubSub-instans

Om du vill skapa en Web PubSub-instans i resursgruppen som du skapade använder du kommandot Azure CLI az webpubsub create . Följande kommando skapar en Free Web PubSub-resurs under resursgruppen myResourceGroup i EastUS:

Varje Web PubSub-resurs måste ha ett unikt namn. Ersätt <ditt unika resursnamn> med namnet på din Web PubSub-instans i följande kommando.

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

Utdata från det här kommandot visar egenskaperna för den nyligen skapade resursen. Notera följande reprties:

  • name: Web PubSub-namnet som du angav i parametern --name ovan.
  • hostName: I exemplet är <your-unique-resource-name>.webpubsub.azure.com/värdnamnet .

I det här läget är ditt Azure-konto det enda som har behörighet att utföra åtgärder på den nya resursen.

Hämta anslutningssträngen

Viktigt!

En niska veze innehåller den auktoriseringsinformation som krävs för att ditt program ska få åtkomst till Azure Web PubSub-tjänsten. Åtkomstnyckeln i niska veze liknar ett rotlösenord för din tjänst. I produktionsmiljöer bör du alltid vara noga med att skydda dina åtkomstnycklar. Använd Azure Key Vault för att hantera och rotera dina nycklar på ett säkert sätt. Undvik att distribuera åtkomstnycklar till andra användare, hårdkoda dem eller spara dem var som helst i oformaterad text som är tillgänglig för andra. Rotera dina nycklar om du tror att de har komprometterats.

Använd kommandot Azure CLI az webpubsub key för att hämta ConnectionString för tjänsten. <your-unique-resource-name> Ersätt platshållaren med namnet på din Azure Web PubSub-instans.

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

Kopiera niska veze som ska användas senare.

Skapa en prenumerantklient

Klienter ansluter till Azure Web PubSub-tjänsten via standard-WebSocket-protokollet med JSON-webbtokenautentisering (JWT). Tjänst-SDK:et tillhandahåller hjälpmetoder för att generera token. I den här självstudien genererar prenumeranten token direkt från ConnectionString. I verkliga program hanterar ett program på serversidan vanligtvis arbetsflödet för autentisering/auktorisering. Mer information om arbetsflödet finns i självstudien Skapa en chattapp.

  1. Skapa först en projektkatalog med namnet subscriber för det här projektet och installera nödvändiga beroenden:

    • Paketet Websocket.Client är ett tredjepartspaket som stöder WebSocket-anslutningar. Du kan använda alla API/bibliotek som stöder WebSocket.
    • SDK-paketet Azure.Messaging.WebPubSub hjälper till att generera 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. Ersätt koden i Program.cs med följande kod som ansluter till tjänsten:

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

    Koden skapar en WebSocket-anslutning som är ansluten till en hubb i Web PubSub. En hubb är en logisk enhet i Web PubSub där du kan publicera meddelanden till en grupp klienter. Viktiga begrepp innehåller en detaljerad förklaring av de termer som används i Web PubSub.

    Tjänsten Web PubSub använder JSON-autentisering (JWT). Exempelkoden använder WebPubSubServiceClient.GetClientAccessUri() i Web PubSub SDK för att generera en URL till tjänsten som innehåller den fullständiga URL:en med en giltig åtkomsttoken.

    När anslutningen har upprättats tar klienten emot meddelanden via WebSocket-anslutningen. Klienten använder client.MessageReceived.Subscribe(msg => ...)); för att lyssna efter inkommande meddelanden.

  3. Starta prenumeranten genom att köra följande kommando och <Web-PubSub-connection-string> ersätta med niska veze du kopierade tidigare:

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

2. Publicera meddelanden med tjänst-SDK

Skapa en utgivare med hjälp av Azure Web PubSub SDK för att publicera ett meddelande till den anslutna klienten. För det här projektet måste du öppna ett annat kommandogränssnitt.

  1. Skapa först en projektkatalog med namnet publisher och installera nödvändiga beroenden:

    mkdir publisher
    cd publisher
    dotnet new console
    dotnet add package Azure.Messaging.WebPubSub
    
  2. Program.cs Uppdatera filen så att den WebPubSubServiceClient använder klassen och skickar meddelanden till klienterna.

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

    Anropet SendToAllAsync() skickar helt enkelt ett meddelande till alla anslutna klienter i hubben.

  3. Skicka ett meddelande genom att köra följande kommando. Ersätt <Web-PubSub-connection-string> med niska veze du kopierade tidigare.

    dotnet run <Web-PubSub-connection-string> "myHub1" "Hello World"
    
  4. Kontrollera att prenumerantens kommandogränssnitt tar emot meddelandet:

    Message received: Hello World
    

Rensa

Du kan ta bort de resurser som du skapade i den här snabbstarten genom att ta bort den resursgrupp som innehåller dem.

az group delete --name myResourceGroup --yes

Om du inte planerar att fortsätta använda Azure Cloud Shell kan du undvika att ackumulera kostnader genom att ta bort resursgruppen som innehåller det associerade lagringskontot. Resursgruppen heter cloud-shell-storage-<your-region>. Kör följande kommando och <CloudShellResourceGroup> ersätt med Cloud Shell-gruppnamnet.

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

Varning

Om du tar bort resursgrupper tas alla resurser bort, inklusive resurser som skapats utanför omfånget för den här självstudien.

Nästa steg

I den här självstudien får du en grundläggande uppfattning om hur du ansluter till Web PubSub-tjänsten och publicerar meddelanden till anslutna klienter.

Kontrollera andra självstudier för att gå vidare med hur du använder tjänsten.