Informazioni di riferimento sulle API REST del piano dati Servizio Azure SignalR
Oltre al modello client/server classico, Servizio Azure SignalR fornisce un set di API REST che consentono di integrare funzionalità in tempo reale nell'architettura serverless.
Nota
Servizio Azure SignalR supporta l'uso delle API REST solo per gestire i client connessi tramite ASP.NET Core SignalR. I client connessi tramite ASP.NET SignalR usano un protocollo dati diverso attualmente non supportato.
Architettura serverless tipica con Funzioni di Azure
Il diagramma seguente illustra un'architettura serverless tipica che usa Servizio Azure SignalR con Funzioni di Azure.
- La
negotiate
funzione restituisce una risposta di negoziazione e reindirizza tutti i client a Servizio Azure SignalR. - La
broadcast
funzione chiama l'API REST per Servizio Azure SignalR. Servizio Azure SignalR trasmette il messaggio a tutti i client connessi.
In un'architettura serverless i client dispongono di connessioni permanenti a Servizio Azure SignalR. Poiché non è disponibile alcun server applicazioni per gestire il traffico, i client sono in LISTEN
modalità . In tale modalità, i client possono ricevere messaggi, ma non possono inviare messaggi. Servizio Azure SignalR disconnette tutti i client che inviano messaggi perché si tratta di un'operazione non valida.
È possibile trovare un esempio completo dell'uso di Servizio Azure SignalR con Funzioni di Azure in questo repository GitHub.
Implementare l'endpoint di negoziazione
È necessario implementare una funzione che restituisce una negotiate
risposta di negoziazione di reindirizzamento in modo che i client possano connettersi al servizio.
Una tipica risposta di negoziazione ha questo formato:
{
"url": "https://<service_name>.service.signalr.net/client/?hub=<hub_name>",
"accessToken": "<a typical JWT token>"
}
Il accessToken
valore viene generato tramite lo stesso algoritmo descritto nella sezione relativa all'autenticazione. L'unica differenza è che l'attestazione aud
deve essere uguale url
a .
È consigliabile ospitare l'API di negoziazione in https://<hub_url>/negotiate
per poter comunque usare un client SignalR per connettersi all'URL dell'hub. Altre informazioni sul reindirizzamento dei client alle Servizio Azure SignalR in Connessioni client.
Versioni dell'API REST
La tabella seguente mostra tutte le versioni dell'API REST supportate. Fornisce anche il file Swagger per ogni versione dell'API.
Versione dell'API | Status | Porta | Documentazione | Specifica |
---|---|---|---|---|
20220601 |
Più recente | Standard | Articolo | File Swagger |
1.0 |
Stable | Standard | Articolo | File Swagger |
1.0-preview |
Obsoleti | Standard | Articolo | File Swagger |
Nella tabella seguente sono elencate le API disponibili.
Tramite l'API REST
Autenticazione tramite AccessKey in Servizio Azure SignalR
In ogni richiesta HTTP è necessaria un'intestazione di autorizzazione con un token JSON Web (JWT) per l'autenticazione con Servizio Azure SignalR.
Algoritmo di firma e firma
HS256
, ovvero HMAC-SHA256, viene usato come algoritmo di firma.
Usare il AccessKey
valore nel stringa di connessione dell'istanza di Servizio Azure SignalR per firmare il token JWT generato.
Richieste
Le attestazioni seguenti devono essere incluse nel token JWT.
Tipo di attestazione | Obbligatorio | Descrizione |
---|---|---|
aud |
true |
Deve essere uguale all'URL della richiesta HTTP, senza includere i parametri di query e barra finale. Ad esempio, il pubblico di una richiesta di trasmissione dovrebbe essere simile al seguente: https://example.service.signalr.net/api/v1/hubs/myhub . |
exp |
true |
Periodo di scadenza del token. |
Autenticazione tramite token Microsoft Entra
Analogamente all'autenticazione tramite AccessKey
, è necessario un token JWT per autenticare una richiesta HTTP usando un token Microsoft Entra.
La differenza è che in questo scenario, Microsoft Entra ID genera il token JWT. Per altre informazioni, vedere Informazioni su come generare token Microsoft Entra.
L'ambito delle credenziali usato deve essere https://signalr.azure.com/.default
.
È anche possibile usare il controllo degli accessi in base al ruolo per autorizzare la richiesta dal client o dal server a Servizio Azure SignalR. Per altre informazioni, vedere Autorizzare l'accesso con Microsoft Entra ID per Servizio Azure SignalR.
API REST correlata all'utente
Per chiamare l'API REST correlata all'utente, ognuno dei client deve identificarsi per Servizio Azure SignalR. In caso contrario, Servizio Azure SignalR non riesce a trovare le connessioni di destinazione dall'ID utente.
È possibile ottenere l'identificazione del client includendo un'attestazione nameid
nel token JWT di ogni client quando si connette a Servizio Azure SignalR. Servizio Azure SignalR quindi usa il valore dell'attestazione nameid
come ID utente per ogni connessione client.
Esempio
In questo repository GitHub è possibile trovare un'app console completa per illustrare come compilare manualmente una richiesta HTTP dell'API REST in Servizio Azure SignalR.
È anche possibile usare Microsoft.Azure.SignalR.Management per pubblicare messaggi in Servizio Azure SignalR usando le interfacce simili di IHubContext
. Gli esempi sono disponibili in questo repository GitHub. Per altre informazioni, vedere Servizio Azure SignalR Management SDK.
Limiti
Attualmente, le richieste api REST presentano le limitazioni seguenti:
- Le dimensioni dell'intestazione sono massime di 16 KB.
- La dimensione del corpo è un massimo di 1 MB.
Se si desidera inviare messaggi di dimensioni superiori a 1 MB, usare Service Management SDK con persistent
la modalità .