Conceitos básicos do Azure Web PubSub
O serviço Azure Web PubSub ajuda você a criar aplicativos Web de mensagens em tempo real. Os clientes se conectam ao serviço usando o protocolo WebSocket padrão, e o serviço expõe APIs REST e SDKs para você gerenciar esses clientes.
Termos
Aqui estão alguns termos importantes usados pelo serviço:
Conexão: Uma conexão, também conhecida como cliente ou conexão do cliente, é uma relação lógica entre um cliente e o serviço Web PubSub. Em uma "conexão", o cliente e o serviço se envolvem em uma série de interações com estado. Conexões usando diferentes protocolos podem se comportar de maneira diferente, por exemplo, algumas conexões são limitadas à duração de uma conexão de rede, enquanto outras podem se estender por várias conexões de rede sucessivas entre um cliente e o serviço.
Hub: um hub é um conceito lógico para um conjunto de conexões de cliente. Geralmente, você usa um hub para um cenário, por exemplo, um hub de chat ou um hub de notificação. Quando a conexão cliente é estabelecida, ela se conecta a um hub e, durante seu tempo de vida, pertence a esse hub. O hub existe depois que uma conexão de cliente se conecta a ele. Aplicativos diferentes podem compartilhar o mesmo serviço Azure Web PubSub usando nomes de hub diferentes. Embora não haja um limite rígido para o número de hubs, um hub consome mais carga do serviço em comparação com um grupo. É recomendável ter um conjunto predeterminado de hubs em vez de gerá-los dinamicamente.
Grupo: um grupo é um subconjunto de conexões com o hub. Você pode adicionar uma conexão de cliente a um grupo ou removê-la do grupo sempre que desejar. Por exemplo, quando um cliente entra em uma sala de chat ou quando um cliente sai da sala de chat, essa sala de chat pode ser considerada um grupo. Um cliente pode ingressar em vários grupos e um grupo pode conter vários clientes. O grupo é como uma "sessão" de grupo, que é criada quando alguém entra nele e desaparece quando não há ninguém nesse grupo. As mensagens enviadas ao grupo são entregues a todos os clientes conectados ao grupo.
Usuário: as conexões com o Web PubSub podem pertencer a um usuário. Um usuário pode ter várias conexões, por exemplo, quando apenas um usuário está conectado a vários dispositivos ou a várias guias do navegador.
Mensagem: quando o cliente está conectado, ele pode enviar mensagens ao aplicativo upstream ou receber mensagens do aplicativo upstream por meio da conexão do WebSocket. As mensagens podem estar no formato de texto sem formatação, binário ou JSON e ter um tamanho máximo de 1 MB.
Eventos de cliente: os eventos são criados durante o ciclo de vida de uma conexão de cliente. Por exemplo, uma conexão de cliente WebSocket simples cria um evento
connect
quando ele tenta se conectar ao serviço, um eventoconnected
quando ele se conectou com êxito ao serviço, um eventomessage
quando ele envia mensagens para o serviço e um eventodisconnected
quando ele se desconecta do serviço. Detalhes sobre eventos de cliente são ilustrados na seção Protocolo de cliente.Manipulador de eventos: o manipulador de eventos contém a lógica para manipular os eventos do cliente. Registre e configure manipuladores de eventos no serviço por meio do portal ou CLI do Azure antecipadamente. Os detalhes são descritos na seção Manipulador de eventos.
Ouvinte de Eventos (versão prévia): o ouvinte de eventos apenas escuta os eventos do cliente, mas não pode interferir no tempo de vida de seus clientes por meio da resposta. Os detalhes são descritos na seção Ouvinte de eventos.
Servidor: o servidor pode manipular eventos de cliente, gerenciar conexões de cliente ou publicar mensagens em grupos. O manipulador de eventos e o ouvinte de eventos são considerados como estando do lado do servidor. Detalhes sobre o servidor são descritos na seção Protocolo do servidor.
Importante
Hub
, Group
, UserId
são funções importantes quando você gerencia clientes e envia mensagens. Elas serão parâmetros necessários em diferentes chamadas da API REST como texto simples. Portanto, NÃO coloque informações confidenciais nesses campos. Por exemplo, credenciais ou tokens de portador que terão alto risco de vazamento.
Fluxo de trabalho
Um fluxo de trabalho típico que usa o serviço é mostrado da seguinte maneira:
Conforme ilustrado pelo grafo de fluxo de trabalho acima:
Um cliente se conecta a um hub no serviço usando o transporte WebSocket. O serviço pode encaminhar as mensagens para o upstream (servidor) configurado ou tratar as mensagens por conta própria e permitir que os clientes façam pub/sub diretamente, dependendo do protocolo usado pelo cliente. Os detalhes estão descritos nos protocolos de cliente.
O serviço invoca o servidor usando o protocolo CloudEvents em diferentes eventos de cliente. O CloudEvents é uma definição padronizada e independente de protocolo da estrutura e da descrição de metadados dos eventos hospedados pela CNCF (Cloud Native Computing Foundation). Os detalhes são descritos em protocolo de servidor.
O servidor pode invocar o serviço usando a API REST para enviar mensagens aos clientes ou para gerenciar os clientes conectados. Os detalhes são descritos em protocolo de servidor