Azure SignalR Service gebruiken met Azure API Management
De Azure API Management-service biedt een hybride beheerplatform voor meerdere clouds voor API's in alle omgevingen. In dit artikel leest u hoe u realtime mogelijkheden toevoegt aan uw toepassing met Azure API Management en de Azure SignalR-service.
Belangrijk
Onbewerkte verbindingsreeks worden alleen in dit artikel weergegeven voor demonstratiedoeleinden.
Een verbindingsreeks bevat de autorisatiegegevens die nodig zijn voor uw toepassing om toegang te krijgen tot Azure SignalR Service. De toegangssleutel in de verbindingsreeks is vergelijkbaar met een hoofdwachtwoord voor uw service. Beveilig uw toegangssleutels altijd in productieomgevingen. Gebruik Azure Key Vault om uw sleutels veilig te beheren en te roteren en uw verbindingsreeks te beveiligen met behulp van Microsoft Entra-id en toegang te autoriseren met Microsoft Entra ID.
Vermijd het distribueren van toegangssleutels naar andere gebruikers, het coderen ervan of het opslaan van ze ergens in tekst zonder opmaak die toegankelijk is voor anderen. Draai uw sleutels als u denkt dat ze mogelijk zijn aangetast.
Resources maken
Volg de quickstart: Een ARM-sjabloon gebruiken om Azure SignalR te implementeren en een SignalR Service-exemplaar ASRS1 te maken
Volg de quickstart: Een ARM-sjabloon gebruiken om Azure API Management te implementeren en een API Management-exemplaar APIM1 te maken
API's configureren
Beperkingen
Er zijn twee soorten aanvragen voor een SignalR-client:
- aanvraag onderhandelen: HTTP-aanvraag
POST
voor<APIM-URL>/client/negotiate/
- connect request: request to
<APIM-URL>/client/
, it could orWebSocket
ServerSentEvent
LongPolling
depends on the transport type of your SignalR client
Het type verbindingsaanvraag is afhankelijk van het transporttype van de SignalR-clients. Net als nu biedt API Management nog geen ondersteuning voor verschillende typen API's voor hetzelfde achtervoegsel. Met deze beperking biedt uw SignalR-client bij het gebruik van API Management geen ondersteuning voor terugval van WebSocket
transporttype naar andere transporttypen. Terugval van ServerSentEvent
naar kan LongPolling
worden ondersteund. In de onderstaande secties worden de gedetailleerde configuraties voor verschillende transporttypen beschreven.
API's configureren wanneer de client verbinding maakt met WebSocket
transport
In deze sectie worden de stappen beschreven voor het configureren van API Management wanneer de SignalR-clients verbinding maken met WebSocket
transport. Wanneer SignalR-clients verbinding maken met WebSocket
transport, zijn er drie soorten aanvragen betrokken:
- OPTIONS preflight HTTP-aanvraag voor onderhandelen
- POST HTTP-aanvraag voor onderhandelen
- WebSocket-aanvraag voor verbinding
We gaan API Management configureren vanuit de portal.
- Ga naar het tabblad API's in de portal voor API Management-exemplaar APIM1, selecteer API toevoegen en kies HTTP, Maken met de volgende parameters:
- Weergavenaam:
SignalR negotiate
- URL van webservice:
https://<your-signalr-service-url>/client/negotiate/
- API-URL-achtervoegsel:
client/negotiate/
- Weergavenaam:
- Selecteer de gemaakte
SignalR negotiate
API, Opslaan met de onderstaande instellingen:- Op het tabblad Ontwerpen
- Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
- Weergavenaam:
negotiate preflight
- URL:
OPTIONS
/
- Weergavenaam:
- Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
- Weergavenaam:
negotiate
- URL:
POST
/
- Weergavenaam:
- Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
- Schakel over naar het tabblad Instellingen en schakel abonnement uit dat is vereist voor een snelle demo
- Op het tabblad Ontwerpen
- Selecteer API toevoegen en kies WebSocket, Maken met de volgende parameters:
- Weergavenaam:
SignalR connect
- WebSocket-URL:
wss://<your-signalr-service-url>/client/
- API-URL-achtervoegsel:
client/
- Weergavenaam:
- Selecteer de gemaakte
SignalR connect
API, Opslaan met de onderstaande instellingen:- Schakel over naar het tabblad Instellingen en schakel abonnement uit dat is vereist voor een snelle demo
Api Management is nu geconfigureerd voor ondersteuning van SignalR-client met WebSocket
transport.
API's configureren wanneer de client verbinding maakt met ServerSentEvents
of LongPolling
transport
In deze sectie worden de stappen beschreven voor het configureren van API Management wanneer de SignalR-clients verbinding maken met ServerSentEvents
of LongPolling
transporttype. Wanneer SignalR-clients verbinding maken met ServerSentEvents
of LongPolling
transport, zijn er vijf soorten aanvragen betrokken:
- OPTIONS preflight HTTP-aanvraag voor onderhandelen
- POST HTTP-aanvraag voor onderhandelen
- OPTIONS preflight HTTP-aanvraag voor verbinding
- POST HTTP-aanvraag voor verbinding maken
- HTTP-aanvraag ophalen voor verbinding
Nu gaan we API Management configureren vanuit de portal.
- Ga naar het tabblad API's in de portal voor API Management-exemplaar APIM1, selecteer API toevoegen en kies HTTP, Maken met de volgende parameters:
- Weergavenaam:
SignalR
- URL van webservice:
https://<your-signalr-service-url>/client/
- API-URL-achtervoegsel:
client/
- Weergavenaam:
- Selecteer de gemaakte
SignalR
API, Opslaan met de onderstaande instellingen:- Op het tabblad Ontwerpen
- Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
- Weergavenaam:
negotiate preflight
- URL:
OPTIONS
/negotiate
- Weergavenaam:
- Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
- Weergavenaam:
negotiate
- URL:
POST
/negotiate
- Weergavenaam:
- Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
- Weergavenaam:
connect preflight
- URL:
OPTIONS
/
- Weergavenaam:
- Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
- Weergavenaam:
connect
- URL:
POST
/
- Weergavenaam:
- Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
- Weergavenaam:
connect get
- URL:
GET
/
- Weergavenaam:
- Selecteer de zojuist toegevoegde get-bewerking voor verbinding en bewerk het back-endbeleid om buffering
ServerSentEvents
voor uit te schakelen. Kijk hier voor meer informatie.<backend> <forward-request buffer-response="false" /> </backend>
- Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
- Schakel over naar het tabblad Instellingen en schakel abonnement uit dat is vereist voor een snelle demo
- Op het tabblad Ontwerpen
Api Management is nu geconfigureerd voor de ondersteuning van signalR-client met ServerSentEvents
of LongPolling
transport.
Chat uitvoeren
Het verkeer kan nu SignalR Service bereiken via API Management. Laten we deze chattoepassing als voorbeeld gebruiken. Laten we beginnen met het lokaal uitvoeren.
Onbewerkte verbindingsreeks worden alleen in dit artikel weergegeven voor demonstratiedoeleinden. Beveilig uw toegangssleutels altijd in productieomgevingen. Gebruik Azure Key Vault om uw sleutels veilig te beheren en te roteren en uw verbindingsreeks te beveiligen met behulp van Microsoft Entra-id en toegang te autoriseren met Microsoft Entra ID.
Laten we eerst de verbindingsreeks van ASRS1 ophalen
- Op het tabblad Verbindingsreeksen van ASRS1
- Clienteindpunt: voer de URL in met behulp van de gateway-URL van APIM1, bijvoorbeeld
https://apim1.azure-api.net
. Het is een verbindingsreeks generator bij het gebruik van omgekeerde proxy's en de waarde blijft niet behouden wanneer u de volgende keer terugkomt op dit tabblad. Wanneer de waarde is ingevoerd, voegt de verbindingsreeks eenClientEndpoint
sectie toe. - De verbindingsreeks kopiƫren
- Clienteindpunt: voer de URL in met behulp van de gateway-URL van APIM1, bijvoorbeeld
- Op het tabblad Verbindingsreeksen van ASRS1
De GitHub-opslagplaats klonen https://github.com/aspnet/AzureSignalR-samples
Ga naar de map Voorbeelden/Chatroom:
Stel de gekopieerde verbindingsreeks in en voer de toepassing lokaal uit. U ziet dat er een
ClientEndpoint
sectie in ConnectionString is.cd samples/Chatroom dotnet restore dotnet user-secrets set Azure:SignalR:ConnectionString "<copied-connection-string-with-client-endpoint>" dotnet run
Transporttype configureren voor de client
Open
index.html
onder mapwwwroot
en zoek de code wanneerconnection
deze wordt gemaakt, werk deze bij om het transporttype op te geven.Als u bijvoorbeeld de verbinding wilt opgeven voor het gebruik van door de server verzonden gebeurtenissen of lange polling, werkt u de code bij naar:
const connection = new signalR.HubConnectionBuilder() .withUrl( "/chat", signalR.HttpTransportType.ServerSentEvents | signalR.HttpTransportType.LongPolling ) .build();
Als u de verbinding wilt opgeven voor het gebruik van WebSockets, werkt u de code bij naar:
const connection = new signalR.HubConnectionBuilder() .withUrl("/chat", signalR.HttpTransportType.WebSockets) .build();
Open http://localhost:5000 vanuit de browser en gebruik F12 om de netwerktraceringen weer te geven. U kunt zien dat de verbinding tot stand is gebracht via APIM1
Volgende stappen
U hebt nu realtime-functionaliteit toegevoegd aan uw API Management met behulp van Azure SignalR. Meer informatie over SignalR Service.