Compartilhar via


Enviar mensagens por push de um servidor

O conhecido modelo HTTP de solicitação/resposta foi projetado para ser escalonável e fácil de usar. No entanto, hoje em dia os usuários finais exigem muito mais do que as finalidades para as quais a web foi originalmente projetada. O protocolo HTTP requer que os usuários iniciem a solicitação para receber uma resposta. No entanto, os desenvolvedores precisam de uma maneira de enviar dados do servidor para os clientes sem que estes os solicitem; em outras palavras, precisam "empurrar" (push, em inglês) dados para os clientes, como o lance mais recente de um produto em um site de leilão ou os preços das ações em ritmo de rápida mudança em um aplicativo financeiro.

GIF de um servidor de aplicativos “empurrando” dados para um cliente conectado.

Este guia de início rápido demonstra como fazer para:

  • cadastrar-se para receber mensagens de um servidor de aplicativos
  • enviar dados por push de um servidor de aplicativos para todos os clientes conectados

Importante

As cadeias de conexão brutas aparecem neste artigo apenas para fins de demonstração.

Uma cadeia de conexão inclui as informações de autorização necessárias para que o seu aplicativo acesse o serviço Azure Web PubSub. A chave de acesso dentro da cadeia de conexão é semelhante a uma senha raiz para o serviço. Em ambientes de produção, sempre proteja suas chaves de acesso. Use o Azure Key Vault para gerenciar e girar suas chaves com segurança e proteger sua conexão com WebPubSubServiceClient.

Evite distribuir chaves de acesso para outros usuários, fazer hard-coding com elas ou salvá-las em qualquer lugar em texto sem formatação que seja acessível a outras pessoas. Gire suas chaves se você acredita que elas podem ter sido comprometidas.

Pré-requisitos

  • Um recurso do Web PubSub. Se ainda não tiver criado um, você pode seguir as diretrizes em Criar um recurso do Web PubSub
  • Um editor de códigos, como o Visual Studio Code
  • Instale as dependências para a linguagem que você planeja usar

Criar um cliente assinante

Para se cadastrar para receber mensagens enviadas por push do seu servidor de aplicativos, um cliente, seja um navegador, um aplicativo móvel ou um dispositivo IoT, precisa primeiro se conectar ao seu recurso do Web PubSub e escutar o evento de mensagem apropriado.

Crie um diretório de projeto chamado subscriber e instale as dependências necessárias

mkdir subscriber
cd subscriber
npm init -y
    
# The client SDK is available as a module on NPM
npm install @azure/web-pubsub-client

Conecte-se ao seu recurso do Web PubSub e registre um ouvinte para o evento do server-message

Um cliente usa uma URL de Acesso de Cliente para se conectar e se autenticar no seu recurso. Essa URL segue um padrão de wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. Um cliente pode ter algumas maneiras de obter a URL de Acesso ao cliente. Neste início rápido, você pode copiar e colar uma URL do portal do Azure conforme mostrado no diagrama a seguir. É uma prática recomendada não codificar o URL de Acesso do Cliente no código. No mundo da produção, geralmente configuramos um servidor de aplicativos para retornar essa URL sob demanda. Gerar a URL de Acesso para o Cliente descreve a prática em detalhes.

O diagrama mostra como obter a URL de acesso do cliente.

Conforme mostrado no diagrama acima, o cliente ingressa no hub chamado myHub1.

Na pasta do projeto subscriber, crie um arquivo chamado subscribe.js com o conteúdo a seguir

const { WebPubSubClient } = require("@azure/web-pubsub-client");

// Instantiates the client object
// <client-access-url> is copied from Azure portal mentioned above
const client = new WebPubSubClient("<client-access-url>")

// Registers a handler for the "server-message" event
client.on("server-message", (e) => {
    console.log(`Received message ${e.message.data}`)
});

// Before a client can receive a message, 
// you must invoke start() on the client object.
client.start();

Executar o programa

node subscribe.js

Agora, esse cliente estabelece uma conexão com o seu recurso do Web PubSub e está pronto para receber mensagens enviadas por push do seu servidor de aplicativos.

Enviar mensagens por push do seu servidor de aplicativos

Agora que já tem um cliente conectado ao seu recurso do Web PubSub, você pode enviar mensagens por push de um servidor de aplicativos a qualquer momento usando o SDK do servidor fornecido pelo Web PubSub.

Crie um diretório de projeto novo chamado publisher e instale as dependências necessárias

mkdir publisher
cd publisher

npm init

# This command installs the server SDK from NPM, 
# which is different from the client SDK you used in subscribe.js
npm install --save @azure/web-pubsub

Crie um arquivo publish.js com o código a seguir

const { WebPubSubServiceClient } = require('@azure/web-pubsub');

// This is the hub name we used on Azure portal when generating the Client Access URL. 
// It ensures this server can push messages to clients in the hub named "myHub1".
const hub = "myHub1";
    
let server = new WebPubSubServiceClient(process.env.WebPubSubConnectionString, hub);

// By default, the content type is `application/json`. 
// Specify contentType as `text/plain` for this demo.
server.sendToAll(process.argv[2], { contentType: "text/plain" });

A chamada server.sendToAll() envia uma mensagem a todos os clientes conectados em um hub.

Obtenha a cadeia de conexão

Importante

Uma cadeia de conexão inclui as informações de autorização necessárias para que o seu aplicativo acesse o serviço Web PubSub. A chave de acesso dentro da cadeia de conexão é semelhante a uma senha raiz para o serviço.

Para este guia de início rápido, vamos obtê-la no portal do Azure conforme mostrado abaixo. Um diagrama mostra como obter a URL de acesso do cliente.

Executar o programa do servidor

Execute os seguintes comandos em um novo shell de comando.

As cadeias de conexão brutas aparecem neste artigo apenas para fins de demonstração. Em ambientes de produção, sempre proteja suas chaves de acesso. Use o Azure Key Vault para gerenciar e girar suas chaves com segurança e proteger sua conexão com WebPubSubServiceClient.

# Set the environment variable for your connection string.
export WebPubSubConnectionString="<Put your connection string here>" 

node publish.js "Hello World"

Observe as mensagens recebidas no lado do cliente

GIF demonstrando como um servidor de aplicativos envia dados por push para o cliente conectado.

Tente executar o mesmo programa de "cadastramento" em diversos shells de comando para incitar mais do que apenas clientes. Assim que o programa "publicar" for executado, você deverá ver mensagens sendo entregues em tempo real para todos esses clientes.

Resumo

Este guia de início rápido demonstra como é fácil enviar mensagens por push de um servidor de aplicativos para todos os clientes conectados em um hub. Além disso, o Web PubSub permite que você envie mensagens por push para:

  • um subconjunto dos clientes em um hub
  • um grupo específico em um hub
  • um subconjunto de clientes em um grupo

Essas APIs permitem uma grande variedade de casos de uso, permitindo que os desenvolvedores se concentrem em uma lógica de negócios exclusiva e, ao mesmo tempo, tenham certeza de que o Web PubSub oferece baixa latência (<100 ms), alta disponibilidade e uma escala gigantesca (+milhões de conexões simultâneas).

Próximas etapas

Na próxima etapa, vamos explorar como trabalhar com o sistema de eventos do Web PubSub necessário para desenvolver aplicativos web completos.