Delen via


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.

Diagram met de architectuur van het gebruik van SignalR Service met API Management.

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

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 or WebSocket 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:

  1. OPTIONS preflight HTTP-aanvraag voor onderhandelen
  2. POST HTTP-aanvraag voor onderhandelen
  3. WebSocket-aanvraag voor verbinding

We gaan API Management configureren vanuit de portal.

  1. 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/
  2. Selecteer de gemaakte SignalR negotiate API, Opslaan met de onderstaande instellingen:
    1. Op het tabblad Ontwerpen
      1. Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
        • Weergavenaam: negotiate preflight
        • URL: OPTIONS /
      2. Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
        • Weergavenaam: negotiate
        • URL: POST /
    2. Schakel over naar het tabblad Instellingen en schakel abonnement uit dat is vereist voor een snelle demo
  3. 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/
  4. Selecteer de gemaakte SignalR connect API, Opslaan met de onderstaande instellingen:
    1. 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:

  1. OPTIONS preflight HTTP-aanvraag voor onderhandelen
  2. POST HTTP-aanvraag voor onderhandelen
  3. OPTIONS preflight HTTP-aanvraag voor verbinding
  4. POST HTTP-aanvraag voor verbinding maken
  5. HTTP-aanvraag ophalen voor verbinding

Nu gaan we API Management configureren vanuit de portal.

  1. 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/
  2. Selecteer de gemaakte SignalR API, Opslaan met de onderstaande instellingen:
    1. Op het tabblad Ontwerpen
      1. Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
        • Weergavenaam: negotiate preflight
        • URL: OPTIONS /negotiate
      2. Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
        • Weergavenaam: negotiate
        • URL: POST /negotiate
      3. Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
        • Weergavenaam: connect preflight
        • URL: OPTIONS /
      4. Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
        • Weergavenaam: connect
        • URL: POST /
      5. Selecteer De bewerking Toevoegen en Opslaan met de volgende parameters:
        • Weergavenaam: connect get
        • URL: GET /
      6. Selecteer de zojuist toegevoegde get-bewerking voor verbinding en bewerk het back-endbeleid om buffering ServerSentEventsvoor uit te schakelen. Kijk hier voor meer informatie.
        <backend>
            <forward-request buffer-response="false" />
        </backend>
        
    2. Schakel over naar het tabblad Instellingen en schakel abonnement uit dat is vereist voor een snelle demo

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 een ClientEndpoint sectie toe.
      • De verbindingsreeks kopiĆ«ren
  • 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 map wwwroot en zoek de code wanneer connection 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.