Referenční informace k rozhraní REST API služby Azure SignalR Service
Kromě modelu klasického klienta nebo serveru poskytuje služba Azure SignalR sadu rozhraní REST API, která vám pomůžou integrovat funkce v reálném čase do architektury bez serveru.
Poznámka:
Služba Azure SignalR podporuje použití rozhraní REST API pouze ke správě klientů připojených prostřednictvím služby ASP.NET Core SignalR. Klienti připojení přes ASP.NET SignalR používají jiný datový protokol, který se v současné době nepodporuje.
Typická architektura bez serveru se službou Azure Functions
Následující diagram znázorňuje typickou architekturu bez serveru, která používá službu Azure SignalR se službou Azure Functions.
- Funkce
negotiate
vrátí odpověď vyjednávání a přesměruje všechny klienty do služby Azure SignalR. - Funkce
broadcast
volá rozhraní REST API pro službu Azure SignalR. Služba Azure SignalR vysílá zprávu všem připojeným klientům.
V bezserverové architektuře mají klienti trvalé připojení ke službě Azure SignalR. Vzhledem k tomu, že neexistuje žádný aplikační server pro zpracování provozu, klienti jsou v LISTEN
režimu. V takovém režimu můžou klienti přijímat zprávy, ale nemůžou posílat zprávy. Služba Azure SignalR odpojí všechny klienty, kteří odesílají zprávy, protože se jedná o neplatnou operaci.
Kompletní ukázku použití služby Azure SignalR s Azure Functions najdete v tomto úložišti GitHubu.
Implementace koncového bodu vyjednávání
Měli byste implementovat negotiate
funkci, která vrací odpověď na vyjednávání přesměrování, aby se klienti mohli připojit ke službě.
Typická odpověď na vyjednávání má tento formát:
{
"url": "https://<service_name>.service.signalr.net/client/?hub=<hub_name>",
"accessToken": "<a typical JWT token>"
}
Hodnota accessToken
se generuje pomocí stejného algoritmu popsaného v části ověřování. Jediným rozdílem je, že aud
deklarace identity by měla být stejná jako url
.
Rozhraní API https://<hub_url>/negotiate
pro vyjednávání byste měli hostovat, abyste se stále mohli pomocí klienta SignalR připojit k adrese URL centra. Přečtěte si další informace o přesměrování klientů do služby Azure SignalR v klientských připojeních.
Verze rozhraní REST API
Následující tabulka uvádí všechny podporované verze rozhraní REST API. Poskytuje také soubor Swagger pro každou verzi rozhraní API.
Verze rozhraní API | Stav | Port | Dokumentace | Specifikace |
---|---|---|---|---|
20220601 |
Nejpozdější | Standard | Článek | Soubor Swagger |
1.0 |
Stable | Standard | Článek | Soubor Swagger |
1.0-preview |
Zastaralé | Standard | Článek | Soubor Swagger |
Následující tabulka uvádí dostupná rozhraní API.
rozhraní API | Cesta |
---|---|
Vysílání zprávy všem klientům připojeným k cílovému centru | POST /api/v1/hubs/{hub} |
Vysílání zprávy všem klientům patří cílovému uživateli | POST /api/v1/hubs/{hub}/users/{id} |
Odeslání zprávy ke konkrétnímu připojení | POST /api/v1/hubs/{hub}/connections/{connectionId} |
Zkontrolujte, jestli připojení s daným ID připojení existuje. | GET /api/v1/hubs/{hub}/connections/{connectionId} |
Zavření připojení klienta | DELETE /api/v1/hubs/{hub}/connections/{connectionId} |
Vysílání zprávy všem klientům v cílové skupině | POST /api/v1/hubs/{hub}/groups/{group} |
Zkontrolujte, jestli v dané skupině nejsou nějaká klientská připojení. | GET /api/v1/hubs/{hub}/groups/{group} |
Zkontrolujte, jestli pro daného uživatele nejsou připojená nějaká připojení klientů. | GET /api/v1/hubs/{hub}/users/{user} |
Přidání připojení k cílové skupině | PUT /api/v1/hubs/{hub}/groups/{group}/connections/{connectionId} |
Odebrání připojení z cílové skupiny | DELETE /api/v1/hubs/{hub}/groups/{group}/connections/{connectionId} |
Kontrola, jestli uživatel v cílové skupině existuje | GET /api/v1/hubs/{hub}/groups/{group}/users/{user} |
Přidání uživatele do cílové skupiny | PUT /api/v1/hubs/{hub}/groups/{group}/users/{user} |
Odebrání uživatele z cílové skupiny | DELETE /api/v1/hubs/{hub}/groups/{group}/users/{user} |
Odebrání uživatele ze všech skupin | DELETE /api/v1/hubs/{hub}/users/{user}/groups |
S využitím REST API
Ověřování prostřednictvím přístupového klíče ve službě Azure SignalR
V každém požadavku HTTP se k ověření ve službě Azure SignalR vyžaduje autorizační hlavička s webovým tokenem JSON (JWT ).
Podpisový algoritmus a podpis
HS256
, konkrétně HMAC-SHA256, se používá jako podpisový algoritmus.
AccessKey
K podepsání vygenerovaného JWT použijte hodnotu v připojovací řetězec instance služby Azure SignalR Service.
Žádosti
Následující deklarace identity musí být zahrnuty do JWT.
Typ deklarace identity | Je povinné | Popis |
---|---|---|
aud |
true |
Musí být stejná jako adresa URL požadavku HTTP, nikoli koncové lomítko a parametry dotazu. Například cílová skupina požadavku vysílání by měla vypadat takto: https://example.service.signalr.net/api/v1/hubs/myhub . |
exp |
true |
Epocha čas vypršení platnosti tohoto tokenu. |
Ověřování prostřednictvím tokenu Microsoft Entra
Podobně jako ověřování prostřednictvím AccessKey
, JWT se vyžaduje k ověření požadavku HTTP pomocí tokenu Microsoft Entra.
Rozdíl je v tom, že v tomto scénáři generuje ID Microsoft Entra JWT. Další informace najdete v tématu Informace o generování tokenů Microsoft Entra.
Použitý obor přihlašovacích údajů by měl být https://signalr.azure.com/.default
.
K autorizaci požadavku z klienta nebo serveru do služby Azure SignalR můžete také použít řízení přístupu na základě role (RBAC ). Další informace naleznete v tématu Autorizace přístupu pomocí Microsoft Entra ID pro službu Azure SignalR.
Uživatelské rozhraní REST API
Pokud chcete volat rozhraní REST API související s uživatelem, měli by se všichni klienti identifikovat ve službě Azure SignalR. Jinak služba Azure SignalR nemůže najít cílová připojení z ID uživatele.
Identifikaci klienta můžete dosáhnout zahrnutím nameid
deklarace identity do JWT každého klienta, když se připojuje ke službě Azure SignalR. Služba Azure SignalR pak použije hodnotu nameid
deklarace identity jako ID uživatele pro každé připojení klienta.
Vzorek
V tomto úložišti GitHubu najdete úplnou konzolovou aplikaci, která předvádí ruční sestavení požadavku HTTP rozhraní REST API ve službě Azure SignalR.
Pomocí microsoft.Azure.SignalR.Management můžete také publikovat zprávy do služby Azure SignalR pomocí podobných IHubContext
rozhraní . Ukázky najdete v tomto úložišti GitHub. Další informace najdete v tématu Sada SDK pro správu služby Azure SignalR.
Omezení
Požadavky rozhraní REST API v současné době mají následující omezení:
- Velikost záhlaví je maximálně 16 kB.
- Velikost těla je maximálně 1 MB.
Pokud chcete odesílat zprávy větší než 1 MB, použijte sadu SDK pro správu služeb s režimem persistent
.