Referência da API REST do plano de dados do Serviço Azure SignalR
Além do padrão clássico cliente/servidor, o Serviço Azure SignalR fornece um conjunto de APIs REST para ajudá-lo a integrar a funcionalidade em tempo real à sua arquitetura sem servidor.
Nota
O Serviço Azure SignalR dá suporte ao uso de APIs REST apenas para gerenciar clientes conectados por meio do ASP.NET Core SignalR. Os clientes conectados através do ASP.NET SignalR usam um protocolo de dados diferente que não é suportado atualmente.
Arquitetura sem servidor típica com o Azure Functions
O diagrama a seguir mostra uma arquitetura típica sem servidor que usa o Serviço SignalR do Azure com o Azure Functions.
- A
negotiate
função retorna uma resposta de negociação e redireciona todos os clientes para o Serviço Azure SignalR. - A
broadcast
função chama a API REST para o Serviço Azure SignalR. O Serviço SignalR do Azure transmite a mensagem para todos os clientes conectados.
Em uma arquitetura sem servidor, os clientes têm conexões persistentes com o Serviço Azure SignalR. Como não há um servidor de aplicativos para lidar com o tráfego, os clientes estão no LISTEN
modo. Nesse modo, os clientes podem receber mensagens, mas não podem enviar mensagens. O Serviço Azure SignalR desconecta qualquer cliente que envia mensagens porque é uma operação inválida.
Você pode encontrar um exemplo completo do uso do Serviço Azure SignalR com o Azure Functions neste repositório do GitHub.
Implementar o ponto de extremidade de negociação
Você deve implementar uma negotiate
função que retorna uma resposta de negociação de redirecionamento para que os clientes possam se conectar ao serviço.
Uma resposta de negociação típica tem este formato:
{
"url": "https://<service_name>.service.signalr.net/client/?hub=<hub_name>",
"accessToken": "<a typical JWT token>"
}
O accessToken
valor é gerado através do mesmo algoritmo descrito na seção de autenticação. A única diferença é que a aud
reivindicação deve ser a mesma url
que .
Você deve hospedar sua API de negociação para https://<hub_url>/negotiate
que ainda possa usar um cliente SignalR para se conectar à URL do hub. Leia mais sobre como redirecionar clientes para o Serviço Azure SignalR em conexões de cliente.
Versões da API REST
A tabela a seguir mostra todas as versões suportadas da API REST. Ele também fornece o arquivo Swagger para cada versão da API.
Versão da API | Status | Porta | Documentação | Especificação |
---|---|---|---|---|
20220601 |
Mais Recente | Standard | Artigo | Arquivo Swagger |
1.0 |
Estável | Standard | Artigo | Arquivo Swagger |
1.0-preview |
Obsoleto | Standard | Artigo | Arquivo Swagger |
A tabela a seguir lista as APIs disponíveis.
Utilizar a API REST
Autenticação via AccessKey no Serviço Azure SignalR
Em cada solicitação HTTP, um cabeçalho de autorização com um JSON Web Token (JWT) é necessário para autenticar com o Serviço Azure SignalR.
Algoritmo de assinatura e assinatura
HS256
, ou seja, HMAC-SHA256, é usado como o algoritmo de assinatura.
Use o AccessKey
valor na cadeia de conexão da instância do Serviço Azure SignalR para assinar o JWT gerado.
Pedidos
As seguintes reivindicações devem ser incluídas no JWT.
Tipo de afirmação | É obrigatório | Description |
---|---|---|
aud |
true |
Precisa ser o mesmo que sua URL de solicitação HTTP, não incluindo a barra à direita e os parâmetros de consulta. Por exemplo, o público de uma solicitação de transmissão deve se parecer com: https://example.service.signalr.net/api/v1/hubs/myhub . |
exp |
true |
Época em que este token expira. |
Autenticação via token Microsoft Entra
Semelhante à autenticação via AccessKey
, um JWT é necessário para autenticar uma solicitação HTTP usando um token Microsoft Entra.
A diferença é que, nesse cenário, o Microsoft Entra ID gera o JWT. Para obter mais informações, consulte Saiba como gerar tokens do Microsoft Entra.
O escopo da credencial usado deve ser https://signalr.azure.com/.default
.
Você também pode usar o controle de acesso baseado em função (RBAC) para autorizar a solicitação do seu cliente ou servidor para o Serviço Azure SignalR. Para obter mais informações, consulte Autorizar acesso com o Microsoft Entra ID para o Serviço Azure SignalR.
API REST relacionada ao usuário
Para chamar a API REST relacionada ao usuário, cada um dos seus clientes deve se identificar no Serviço Azure SignalR. Caso contrário, o Serviço Azure SignalR não poderá encontrar conexões de destino a partir da ID do usuário.
Você pode obter a identificação do cliente incluindo uma nameid
declaração no JWT de cada cliente quando ele estiver se conectando ao Serviço Azure SignalR. Em seguida, o nameid
Serviço SignalR do Azure usa o valor da declaração como a ID do usuário para cada conexão de cliente.
Exemplo
Neste repositório GitHub, você pode encontrar um aplicativo de console completo para demonstrar como criar manualmente uma solicitação REST API HTTP no Serviço Azure SignalR.
Você também pode usar Microsoft.Azure.SignalR.Management para publicar mensagens no Serviço Azure SignalR usando as interfaces semelhantes do IHubContext
. Você pode encontrar exemplos neste repositório GitHub. Para obter mais informações, consulte SDK de Gerenciamento de Serviço do Azure SignalR.
Limitações
Atualmente, as solicitações de API REST têm as seguintes limitações:
- O tamanho do cabeçalho é de no máximo 16 KB.
- O tamanho do corpo é no máximo 1 MB.
Se você quiser enviar mensagens maiores que 1 MB, use o SDK de gerenciamento de serviços com persistent
o modo.