Jak používat službu Azure SignalR se službou Azure API Management
Služba Azure API Management poskytuje hybridní multicloudovou platformu pro správu pro rozhraní API ve všech prostředích. V tomto článku se dozvíte, jak do aplikace přidat funkce v reálném čase pomocí služby Azure API Management a služby Azure SignalR.
Důležité
Nezpracované připojovací řetězec se v tomto článku zobrazují jenom pro demonstrační účely.
Připojovací řetězec obsahuje autorizační informace potřebné pro vaši aplikaci pro přístup ke službě Azure SignalR. Přístupový klíč uvnitř připojovací řetězec je podobný kořenovému heslu pro vaši službu. V produkčních prostředích vždy chraňte přístupové klíče. Pomocí služby Azure Key Vault můžete bezpečně spravovat a obměňovat klíče a zabezpečit připojovací řetězec pomocí ID Microsoft Entra a autorizovat přístup pomocí Microsoft Entra ID.
Vyhněte se distribuci přístupových klíčů ostatním uživatelům, jejich pevnému kódování nebo jejich uložení kdekoli ve formátu prostého textu, který je přístupný ostatním uživatelům. Otočte klíče, pokud se domníváte, že mohly být ohroženy.
Vytvoření zdrojů
Postupujte podle rychlého startu: Použití šablony ARM k nasazení Azure SignalR a vytvoření instance služby SignalR SERVICE ASRS1
Postupujte podle rychlého startu: Použití šablony ARM k nasazení služby Azure API Management a vytvoření instance APIM1 služby API Management
Konfigurace rozhraní API
Omezení
Pro klienta SignalR existují dva typy požadavků:
-
žádost negotiate: Požadavek HTTP
POST
na<APIM-URL>/client/negotiate/
-
connect request: request to
<APIM-URL>/client/
, it could orWebSocket
ServerSentEvent
LongPolling
depends on transport type of your SignalR client
Typ žádosti o připojení se liší v závislosti na typu přenosu klientů SignalR. Zatím api Management zatím nepodporuje různé typy rozhraní API pro stejnou příponu. S tímto omezením klient SignalR při použití služby API Management nepodporuje náhradní typ WebSocket
přenosu do jiných typů přenosu. Náhradní řešení ServerSentEvent
LongPolling
může být podporováno. Níže uvedené části popisují podrobné konfigurace pro různé typy přenosu.
Konfigurace rozhraní API při připojení klienta k WebSocket
přenosu
Tato část popisuje postup konfigurace služby API Management, když se klienti SignalR připojují k WebSocket
přenosu. Když se klienti SignalR připojují k WebSocket
přenosu, jsou zapojeny tři typy požadavků:
- Předběžný požadavek HTTP OPTIONS pro vyjednání
- Požadavek POST HTTP pro vyjednávání
- Požadavek protokolu WebSocket na připojení
Pojďme nakonfigurovat službu API Management z portálu.
- Přejděte na kartu Rozhraní API na portálu pro instanci APIM1 služby API Management, vyberte Přidat rozhraní API a zvolte HTTP, Vytvořte s následujícími parametry:
- Zobrazovaný název:
SignalR negotiate
- Adresa URL webové služby:
https://<your-signalr-service-url>/client/negotiate/
- Přípona adresy URL rozhraní API:
client/negotiate/
- Zobrazovaný název:
- Vyberte vytvořené
SignalR negotiate
rozhraní API a uložte ho s následujícím nastavením:- Karta Návrh
- Vyberte Přidat operaci a uložte s následujícími parametry:
- Zobrazovaný název:
negotiate preflight
- Adresa URL:
OPTIONS
/
- Zobrazovaný název:
- Vyberte Přidat operaci a uložte s následujícími parametry:
- Zobrazovaný název:
negotiate
- Adresa URL:
POST
/
- Zobrazovaný název:
- Vyberte Přidat operaci a uložte s následujícími parametry:
- Přepnutí na kartu Nastavení a zrušení zaškrtnutí políčka Předplatná vyžadovaná pro rychlý ukázkový účel
- Karta Návrh
- Vyberte Přidat rozhraní API a zvolte WebSocket, Vytvořit s následujícími parametry:
- Zobrazovaný název:
SignalR connect
- Adresa URL protokolu WebSocket:
wss://<your-signalr-service-url>/client/
- Přípona adresy URL rozhraní API:
client/
- Zobrazovaný název:
- Vyberte vytvořené
SignalR connect
rozhraní API a uložte ho s následujícím nastavením:- Přepnutí na kartu Nastavení a zrušení zaškrtnutí políčka Předplatná vyžadovaná pro rychlý ukázkový účel
Teď je služba API Management úspěšně nakonfigurovaná tak, aby podporovala klienta SignalR s přenosem WebSocket
.
Konfigurace rozhraní API při připojení klienta nebo ServerSentEvents
LongPolling
přenosu
Tato část popisuje postup konfigurace služby API Management, když se klienti SignalR připojují k ServerSentEvents
typu přenosu nebo LongPolling
se k němu připojují. Když se klienti SignalR připojují k ServerSentEvents
přenosu nebo LongPolling
se připojují, týká se pět typů požadavků:
- Předběžný požadavek HTTP OPTIONS pro vyjednání
- Požadavek POST HTTP pro vyjednávání
- Předběžný požadavek HTTP OPTIONS pro připojení
- Požadavek POST HTTP pro připojení
- Požadavek GET HTTP pro připojení
Teď nakonfigurujeme službu API Management z portálu.
- Přejděte na kartu Rozhraní API na portálu pro instanci APIM1 služby API Management, vyberte Přidat rozhraní API a zvolte HTTP, Vytvořte s následujícími parametry:
- Zobrazovaný název:
SignalR
- Adresa URL webové služby:
https://<your-signalr-service-url>/client/
- Přípona adresy URL rozhraní API:
client/
- Zobrazovaný název:
- Vyberte vytvořené
SignalR
rozhraní API a uložte ho s následujícím nastavením:- Karta Návrh
- Vyberte Přidat operaci a uložte s následujícími parametry:
- Zobrazovaný název:
negotiate preflight
- Adresa URL:
OPTIONS
/negotiate
- Zobrazovaný název:
- Vyberte Přidat operaci a uložte s následujícími parametry:
- Zobrazovaný název:
negotiate
- Adresa URL:
POST
/negotiate
- Zobrazovaný název:
- Vyberte Přidat operaci a uložte s následujícími parametry:
- Zobrazovaný název:
connect preflight
- Adresa URL:
OPTIONS
/
- Zobrazovaný název:
- Vyberte Přidat operaci a uložte s následujícími parametry:
- Zobrazovaný název:
connect
- Adresa URL:
POST
/
- Zobrazovaný název:
- Vyberte Přidat operaci a uložte s následujícími parametry:
- Zobrazovaný název:
connect get
- Adresa URL:
GET
/
- Zobrazovaný název:
- Vyberte nově přidanou operaci získání připojení a upravte zásady back-endu tak, aby se zakázaly ukládání
ServerSentEvents
do vyrovnávací paměti , podívejte sem , kde najdete další podrobnosti.<backend> <forward-request buffer-response="false" /> </backend>
- Vyberte Přidat operaci a uložte s následujícími parametry:
- Přepnutí na kartu Nastavení a zrušení zaškrtnutí políčka Předplatná vyžadovaná pro rychlý ukázkový účel
- Karta Návrh
Teď je služba API Management úspěšně nakonfigurovaná tak, aby podporovala klienta SignalR s přenosemServerSentEvents
.LongPolling
Spuštění chatu
Provoz se teď může spojit se službou SignalR prostřednictvím služby API Management. Tuto chatovací aplikaci použijeme jako příklad. Začněme tím, že ho spustíme místně.
Nezpracované připojovací řetězec se v tomto článku zobrazují jenom pro demonstrační účely. V produkčních prostředích vždy chraňte přístupové klíče. Pomocí služby Azure Key Vault můžete bezpečně spravovat a obměňovat klíče a zabezpečit připojovací řetězec pomocí ID Microsoft Entra a autorizovat přístup pomocí Microsoft Entra ID.
Nejprve získáme připojovací řetězec ASRS1.
-
Na kartě Připojovací řetězce služby ASRS1
-
Koncový bod klienta: Zadejte adresu URL pomocí adresy URL brány apiM1, například
https://apim1.azure-api.net
. Jedná se o generátor připojovací řetězec při použití reverzních proxy serverů a hodnota se při příštím návratu na tuto kartu nezachová. Po zadání hodnoty připojí připojovací řetězecClientEndpoint
oddíl. - Zkopírování připojovacího řetězce
-
Koncový bod klienta: Zadejte adresu URL pomocí adresy URL brány apiM1, například
-
Na kartě Připojovací řetězce služby ASRS1
Klonování úložiště GitHub https://github.com/aspnet/AzureSignalR-samples
Přejděte na ukázky nebo složku Chatroom:
Nastavte zkopírovaný připojovací řetězec a spusťte aplikaci místně, můžete vidět, že v připojovacímstringu je
ClientEndpoint
oddíl.cd samples/Chatroom dotnet restore dotnet user-secrets set Azure:SignalR:ConnectionString "<copied-connection-string-with-client-endpoint>" dotnet run
Konfigurace typu přenosu pro klienta
Otevřete
index.html
pod složkouwwwroot
a vyhledejte kód, kterýconnection
se vytvoří, aktualizujte ho tak, aby určil typ přenosu.Pokud chcete například zadat připojení k použití událostí odesílaných serverem nebo dlouhých dotazování, aktualizujte kód na:
const connection = new signalR.HubConnectionBuilder() .withUrl( "/chat", signalR.HttpTransportType.ServerSentEvents | signalR.HttpTransportType.LongPolling ) .build();
Chcete-li zadat připojení pro použití webSocket, aktualizujte kód na:
const connection = new signalR.HubConnectionBuilder() .withUrl("/chat", signalR.HttpTransportType.WebSockets) .build();
Otevřete http://localhost:5000 v prohlížeči a pomocí F12 zobrazte trasování sítě. Uvidíte, že se připojení naváže přes APIM1.
Další kroky
Teď jste úspěšně přidali do služby API Management funkci v reálném čase pomocí Azure SignalR. Přečtěte si další informace o službě SignalR.