Início Rápido: Publicar mensagens com o SDK do serviço PubSub web do Azure

O Azure Web PubSub ajuda-o a gerir clientes WebSocket. Este início rápido mostra-lhe como publicar mensagens em clientes WebSocket com o SDK do serviço Azure Web PubSub.

Pré-requisitos

  • Uma subscrição do Azure, se não tiver uma, crie uma conta gratuita.
  • uma shell de comandos do Bash e do PowerShell. Os exemplos de Python, JavaScript e Java requerem uma shell de comandos do Bash.
  • Um editor de ficheiros, como o VSCode.
  • CLI do Azure: instalar a CLI do Azure

Se criar o projeto num computador local, terá de instalar as dependências do idioma que está a utilizar:

Instale o SDK .NET Core e o runtime e dotnet aspnetcore .

.NET Core

1. Configuração

Para iniciar sessão no Azure a partir da CLI, execute o seguinte comando e siga as instruções para concluir o processo de autenticação. Se estiver a utilizar Cloud Shell, não é necessário iniciar sessão.

az login

Certifique-se de que está a executar a versão mais recente da CLI através do comando de atualização.

az upgrade

Em seguida, instale ou atualize a extensão Azure Web PubSub para a CLI se não tiver sido instalada com az upgrade.

az extension add --name webpubsub --upgrade

1. Criar um grupo de recursos

Defina as seguintes variáveis de ambiente. Substitua o <marcador> de posição por um nome pubSub Web exclusivo.

RESOURCE_GROUP="webpubsub-resource-group"
LOCATION="EastUS"
WEB_PUBSUB_NAME="<your-unique-name>"

Crie um grupo de recursos para o projeto Web PubSub.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

2. Implementar uma instância de serviço Web PubSub

Utilize o az webpubsub create comando para criar e implementar uma instância de serviço Web PubSub.

az webpubsub create \
  --name $WEB_PUBSUB_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --sku Free_F1

Guarde a cadeia de ligação do serviço. A cadeia de ligação é utilizada pelo SDK do serviço para publicar mensagens.

Importante

Num ambiente de produção, deve armazenar cadeias de ligação de forma segura com o Azure Key Vault.

az webpubsub key show --name $WEB_PUBSUB_NAME --resource-group $RESOURCE_GROUP --query primaryConnectionString

3. Ligar um cliente à instância de serviço

Criar um cliente Web PubSub. O cliente mantém uma ligação ao serviço até que seja terminado.

Utilize o az webpubsub client comando para iniciar uma ligação de cliente WebSocket ao serviço. Os clientes ligam-se sempre a um hub, pelo que fornecem um nome de hub ao qual o cliente se vai ligar.

az webpubsub client start \
  --name $WEB_PUBSUB_NAME \
  --resource-group $RESOURCE_GROUP \
  --hub-name "myHub1" \
  --user-id "user1"

A ligação ao serviço Web PubSub é estabelecida quando vê uma mensagem JSON a indicar que o cliente está agora ligado com êxito e é-lhe atribuído um exclusivo connectionId:

{"type":"system","event":"connected","userId":"user1","connectionId":"<your_unique_connection_id>"}

4. Publicar mensagens com o SDK de serviço

Irá utilizar o SDK do Azure Web PubSub para publicar uma mensagem a todos os clientes ligados ao hub. Pode escolher entre C#, JavaScript, Python e Java. As dependências de cada idioma são instaladas nos passos para esse idioma. Python, JavaScript e Java necessitam de uma shell de bash para executar os comandos neste início rápido.

Configurar o projeto para publicar mensagens

  1. Abra uma nova shell de comandos para este projeto.

  2. Guarde a cadeia de ligação da shell do cliente. Substitua o <your_connection_string> marcador de posição pela cadeia de ligação que apresentou num passo anterior.

    connection_string="<your_connection_string>"
    
  3. Agora, selecione o idioma do projeto.

  1. Adicione um novo projeto com o nome publisher e o pacote Azure.Messaging.WebPubSubSDK .

    mkdir publisher
    cd publisher
    dotnet new console
    dotnet add package Azure.Messaging.WebPubSub
    
  2. Atualize o Program.cs ficheiro para utilizar a WebPubSubServiceClient classe para enviar mensagens aos clientes. Substitua o código no Program.cs ficheiro pelo seguinte código.

    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];
    
                var service = new WebPubSubServiceClient(connectionString, hub);
    
                // Send messages to all the connected clients
                // You can also try SendToConnectionAsync to send messages to the specific connection
                await service.SendToAllAsync(message);
            }
        }
    }
    

    A service.SendToAllAsync() chamada envia simplesmente uma mensagem para todos os clientes ligados no hub.

  3. Execute o seguinte comando para publicar uma mensagem no serviço.

    dotnet run $connection_string "myHub1" "Hello World"
    
  4. A shell de comandos anterior que contém o cliente Web PubSub mostra a mensagem recebida.

    {"type":"message","from":"server","dataType":"text","data":"Hello World"}
    

Limpeza

Pode eliminar os recursos que criou neste início rápido ao eliminar o grupo de recursos que os contém.

az group delete --name $RESOURCE_GROUP --yes