Início Rápido: publicar mensagens usando o SDK do serviço Azure Web PubSub

O Azure Web PubSub ajuda você a gerenciar clientes WebSocket. Este início rápido mostra como publicar mensagens para clientes WebSocket usando o SDK do serviço Azure Web PubSub.

Pré-requisitos

  • Uma assinatura do Azure. Se você não tiver uma, crie uma conta gratuita.
  • um shell de comando Bash e PowerShell. As amostras de Python, JavaScript e Java exigem um shell de comando Bash.
  • Um editor de arquivos como VSCode.
  • CLI do Azure: instalar a CLI do Azure

Se estiver criando o projeto em um computador local, você precisará instalar as dependências da linguagem que estiver usando:

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

.NET Core

1. Instalação

Para entrar no Azure usando a CLIl, execute o comando a seguir e siga os prompts para concluir o processo de autenticação. Se você estiver usando Cloud Shell, não será necessário entrar.

az login

Verifique se você está executando a versão mais recente da CLI com o comando de atualização.

az upgrade

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

az extension add --name webpubsub --upgrade

1. Criar um grupo de recursos

Defina as variáveis de ambiente a seguir. Substitua o <espaço reservado> por um nome do Web PubSub exclusivo.

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

Crie um grupo de recursos para o projeto do Web PubSub.

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

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

Use o comando az webpubsub create para criar e implantar uma instância de serviço do Web PubSub.

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

Salve a cadeia de conexão do serviço. A cadeia de conexão é usada pelo SDK do serviço para publicar mensagens.

Importante

Em um ambiente de produção, você deve armazenar com segurança cadeias de conexão usando o Azure Key Vault.

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

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

Crie um cliente do Web PubSub. O cliente mantém uma conexão com o serviço até que ele seja encerrado.

Use o comando az webpubsub client para iniciar uma conexão de cliente WebSocket ao serviço. Os clientes sempre se conectam a um hub. Portanto, forneça um nome de hub para o cliente se conectar.

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

A conexão ao serviço Web PubSub é estabelecida quando você vir uma mensagem JSON, indicando que o cliente agora está conectado com êxito e foi atribuído com um connectionId exclusivo:

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

4. Publicar mensagens usando o SDK do serviço

Você usará o SDK do Azure Web PubSub para publicar uma mensagem para todos os clientes conectados ao hub. É possível escolher entre C#, JavaScript, Python e Java. As dependências de cada linguagem são instaladas nas etapas para essa linguagem. Python, JavaScript e Java exigem um shell bash para executar os comandos neste início rápido.

Configurar o projeto para publicar mensagens

  1. Abra um novo shell de comando para este projeto.

  2. Salve a cadeia de conexão do shell do cliente. Substitua o espaço reservado <your_connection_string> pela cadeia de conexão exibida em uma etapa anterior.

    connection_string="<your_connection_string>"
    
  3. Agora, selecione a linguagem do projeto.

  1. Adicione um novo projeto nomeado como publisher e adicione o pacote do SDK Azure.Messaging.WebPubSub.

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

    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 chamada service.SendToAllAsync() simplesmente envia uma mensagem a todos os clientes conectados no hub.

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

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

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

Limpeza

Você pode excluir os recursos criados neste início rápido excluindo o grupo de recursos que os contém.

az group delete --name $RESOURCE_GROUP --yes