Partilhar via


Enviar mensagens do servidor

O modelo familiar de solicitação/resposta HTTP foi projetado para ser fácil de trabalhar e escalável. No entanto, hoje em dia os usuários finais exigem muito mais da web do que ela foi originalmente projetada. O protocolo HTTP requer que os usuários iniciem a solicitação para receber uma resposta. Mas os desenvolvedores precisam de uma maneira de enviar dados do servidor para os clientes sem que eles peçam; Em outras palavras, eles precisam "empurrar " dados para os clientes, como empurrar o preço de licitação mais recente de um produto em um site de leilões ou preços de ações em rápida evolução em uma aplicação financeira.

GIF do servidor de aplicativos enviando dados para o cliente conectado.

Este guia de início rápido demonstra como

  • Inscrever-se em 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 seu aplicativo acessar o serviço Azure Web PubSub. A chave de acesso dentro da cadeia de conexão é semelhante a uma senha de root para o seu serviço. Em ambientes de produção, proteja sempre as suas chaves de acesso. Use o Azure Key Vault para gerenciar e girar suas chaves com segurança e proteger sua conexão com WebPubSubServiceCliento .

Evite distribuir chaves de acesso para outros usuários, codificá-las ou salvá-las em qualquer lugar em texto simples acessível a outras pessoas. Rode as chaves se acreditar que podem ter sido comprometidas.

Pré-requisitos

  • Um recurso Web PubSub. Se você ainda não criou um, você pode seguir as orientações: Criar um recurso Web PubSub
  • Um editor de código, como o Visual Studio Code
  • Instalar as dependências para o idioma que você planeja usar

Criar um cliente assinante

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

Criar um diretório de projeto chamado subscriber e instalar 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 Web PubSub e registre um ouvinte para o server-message evento

Um cliente usa uma URL de Acesso para Cliente para se conectar e autenticar com seu recurso. Este 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 para Cliente. Para este início rápido, você pode copiar e colar um do portal do Azure mostrado no diagrama a seguir. É uma prática recomendada não codificar a URL de Acesso para Cliente em seu código. No mundo da produção, geralmente configuramos um servidor de aplicativos para retornar essa URL sob demanda. Gerar URL de Acesso para Cliente descreve a prática em detalhes.

O diagrama mostra como obter url de acesso para cliente.

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

Na pasta do subscriber projeto, crie um arquivo nomeado subscribe.js com o seguinte código

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

Execute o programa

node subscribe.js

Agora, esse cliente estabelece uma conexão com seu recurso 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 você tem um cliente conectado ao seu recurso 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.

Criar um novo diretório de projeto chamado publisher e instalar 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 publish.js arquivo com o seguinte código

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 server.sendToAll() chamada envia uma mensagem para todos os clientes conectados em um hub.

Obter a cadeia de ligação

Importante

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

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

Execute 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, proteja sempre as suas chaves de acesso. Use o Azure Key Vault para gerenciar e girar suas chaves com segurança e proteger sua conexão com WebPubSubServiceCliento .

# 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 de demonstração de um servidor de aplicativos enviando dados para o cliente conectado.

Tente executar o mesmo programa "subscribe" em vários shells de comando para estimular mais do que os clientes. Assim que o programa "publicar" é executado, você deve ver as mensagens sendo entregues em tempo real para todos esses clientes.

Resumo

Este guia de início rápido demonstra como é fácil enviar mensagens de um servidor de aplicativos para todos os clientes conectados em um hub. Além disso, Web PubSub permite que você envie mensagens 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, ao mesmo tempo em que têm a certeza de que o Web PubSub oferece baixa latência (<100ms), alta disponibilidade e escala massiva (milhões + conexões simultâneas).

Próximos passos

Na próxima etapa, exploraremos como trabalhar com o sistema de eventos do Web PubSub, necessário para construir aplicações web completas.