U kunt de code ophalen die in dit artikel wordt vermeld in GitHub.
Notitie
U kunt de code ophalen die in dit artikel wordt vermeld in GitHub.
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.
Vereisten
Een Azure-account met een actief abonnement. Als u geen account hebt, kunt u er gratis een maken.
Uw toepassing heeft toegang tot een Azure SignalR Service-exemplaar. Gebruik de volgende stappen om een Azure SignalR Service-exemplaar te maken met behulp van Azure Portal:
Selecteer in Azure Portal de knop Een resource maken (+).
Zoek naar SignalR Service en selecteer deze.
Selecteer Maken.
Voer de volgende informatie in.
Naam
Weergegeven als
Resourcegroep
Maak een nieuwe resourcegroep met een unieke naam.
Resourcenaam
Voer een unieke naam in voor het Azure SignalR Service-exemplaar.
Een Azure-functie-app en een Azure-opslagaccount maken
Selecteer op de startpagina in Azure Portal de optie Een resource maken (+).
Zoek naar functie-app en selecteer deze.
Selecteer Maken.
Voer de volgende informatie in.
Naam
Weergegeven als
Resourcegroep
Gebruik dezelfde resourcegroep met uw Azure SignalR Service-exemplaar.
Naam van de functie-app
Voer een unieke naam in voor de functie-app.
Runtimestack
Selecteer Node.js.
Regio
Selecteer een regio bij u in de buurt.
Standaard wordt een nieuw Azure-opslagaccount gemaakt in dezelfde resourcegroep samen met uw functie-app. Als u een ander opslagaccount in de functie-app wilt gebruiken, schakelt u over naar het tabblad Hosting om een account te kiezen.
Selecteer Controleren + maken en selecteer vervolgens Maken.
Een Azure Functions-project lokaal maken
Een functie-app initialiseren
Maak vanaf een opdrachtregel een hoofdmap voor uw project en ga naar de map.
Voer de volgende opdracht uit in uw terminal om een nieuw JavaScript Functions-project te maken:
Wanneer u de Azure Functions-runtime lokaal uitvoert en foutopsporing uitvoert, leest de functie-app toepassingsinstellingen uit local.settings.json. Werk dit bestand bij met de verbindingsreeks s van het Azure SignalR Service-exemplaar en het opslagaccount dat u eerder hebt gemaakt.
Voer de Azure SignalR Service-verbindingsreeks in de AzureSignalRConnectionString instelling in.
Als u de tekenreeks wilt ophalen, gaat u naar uw Azure SignalR Service-exemplaar in Azure Portal. Zoek in de sectie Instellingen de instelling Sleutels . Selecteer de knop Kopiëren rechts van het verbindingsreeks om deze naar het klembord te kopiëren. U kunt de primaire of secundaire verbindingsreeks gebruiken.
Voer het opslagaccount verbindingsreeks in de AzureWebJobsStorage instelling in.
Als u de tekenreeks wilt ophalen, gaat u naar uw opslagaccount in Azure Portal. Zoek in de sectie Beveiliging en netwerken de instelling Toegangssleutels . Selecteer de knop Kopiëren rechts van het verbindingsreeks om deze naar het klembord te kopiëren. U kunt de primaire of secundaire verbindingsreeks gebruiken.
Een functie maken om gebruikers te verifiëren bij Azure SignalR Service
Wanneer de chat-app de eerste keer wordt geopend in de browser, zijn geldige verbindingsreferenties vereist voor het maken van verbinding met Azure SignalR Service. Maak een HTTP-triggerfunctie met de naam negotiate in uw functie-app om deze verbindingsgegevens te retourneren.
Notitie
Deze functie moet een naam negotiate hebben omdat voor de SignalR-client een eindpunt is vereist dat eindigt op /negotiate.
De functie bevat een HTTP-triggerbinding voor het ontvangen van aanvragen van SignalR-clients. De functie bevat ook een SignalR-invoerbinding om geldige referenties te genereren voor een client om verbinding te maken met een Azure SignalR Service-hub met de naam default.
Deze functie neemt de SignalR-verbindingsgegevens van de invoerbinding en retourneert deze naar de client in de hoofdtekst van het HTTP-antwoord.
Er is geen userId eigenschap in de signalRConnectionInfo binding voor lokale ontwikkeling. U voegt deze later toe om de gebruikersnaam van een SignalR-verbinding in te stellen wanneer u de functie-app implementeert in Azure.
Maak vanuit de hoofdprojectmap de negotiate functie op basis van een ingebouwde sjabloon met behulp van de volgende opdracht:
Bash
func new --template "SignalR negotiate HTTP trigger" --name negotiate
Open negotiate/function.json om de configuratie van de functiebinding weer te geven.
De functie bevat een HTTP-triggerbinding voor het ontvangen van aanvragen van SignalR-clients. De functie bevat ook een SignalR-invoerbinding om geldige referenties te genereren voor een client om verbinding te maken met een Azure SignalR Service-hub met de naam default.
Er is geen userId eigenschap in de signalRConnectionInfo binding voor lokale ontwikkeling. U voegt deze later toe om de gebruikersnaam van een SignalR-verbinding in te stellen wanneer u de functie-app implementeert in Azure.
Sluit het bestand onderhandelen/function.json .
Open negotiate/index.js om de hoofdtekst van de functie weer te geven:
Deze functie gebruikt de SignalR-verbindingsgegevens van de invoerbinding en retourneert die aan de client in de hoofdtekst van het HTTP-antwoord. De SignalR-client gebruikt deze informatie om verbinding te maken met het Azure SignalR Service-exemplaar.
Een functie maken voor het verzenden van chatberichten
De web-app vereist ook een HTTP-API voor het verzenden van chatberichten. Maak een HTTP-triggerfunctie waarmee berichten worden verzonden naar alle verbonden clients die gebruikmaken van Azure SignalR Service:
De functie bevat een HTTP-trigger en een SignalR-uitvoerbinding. De hoofdtekst van de HTTP-aanvraag wordt verzonden naar clients die zijn verbonden met Azure SignalR Service. Er wordt een functie aangeroepen met de naam newMessage op elke client.
De functie kan de identiteit van de afzender lezen en kan een recipient waarde in de hoofdtekst van het bericht accepteren, zodat u een bericht privé naar één gebruiker kunt verzenden. U gebruikt deze functies verderop in de zelfstudie.
Sla het bestand op.
Maak vanuit de hoofdprojectmap een HTTP-triggerfunctie met de naam sendMessage van de sjabloon met behulp van de volgende opdracht:
Bash
func new --name sendMessage --template "Http trigger"
Als u bindingen voor de functie wilt configureren, vervangt u de inhoud van sendMessage/function.json door de volgende code:
De voorgaande code brengt twee wijzigingen aan in het oorspronkelijke bestand:
De route wordt gewijzigd en messages de HTTP-trigger wordt beperkt tot de POST HTTP-methode.
Er wordt een Azure SignalR Service-uitvoerbinding toegevoegd waarmee een bericht dat door de functie wordt geretourneerd, wordt verzonden naar alle clients die zijn verbonden met een Azure SignalR Service-hub met de naam default.
Vervang de inhoud van sendMessage/index.js door de volgende code:
Deze functie neemt de hoofdtekst van de HTTP-aanvraag en verzendt deze naar clients die zijn verbonden met Azure SignalR Service. Er wordt een functie aangeroepen met de naam newMessage op elke client.
De functie kan de identiteit van de afzender lezen en kan een recipient waarde in de hoofdtekst van het bericht accepteren, zodat u een bericht privé naar één gebruiker kunt verzenden. U gebruikt deze functies verderop in de zelfstudie.
De webgebruikersinterface van de chatclient hosten
De gebruikersinterface van de chattoepassing is een eenvoudige toepassing met één pagina die is gemaakt met het Vue JavaScript-framework met behulp van de ASP.NET Core SignalR JavaScript-client. Ter vereenvoudiging fungeert de functie-app als host voor de webpagina. In een productieomgeving kunt u Static Web Apps gebruiken om de webpagina te hosten.
De functie leest de statische webpagina en retourneert deze aan de gebruiker.
Test uw app lokaal. Start de functie-app met behulp van deze opdracht:
Bash
func start
Open http://localhost:7071/api/index in uw webbrowser. Er moet een chatwebpagina worden weergegeven.
Voer een bericht in het chatvak in.
Nadat u de Enter-toets hebt geselecteerd, wordt het bericht weergegeven op de webpagina. Omdat de gebruikersnaam van de SignalR-client niet is ingesteld, verzendt u alle berichten anoniem.
Maak een map met de naam inhoud in de hoofdmap van uw functieproject.
Maak in de inhoudsmap een bestand met de naam index.html.
Kopieer en plak de inhoud van index.html in uw bestand. Sla het bestand op.
Maak vanuit de hoofdprojectmap een HTTP-triggerfunctie met de naam index van de sjabloon met behulp van deze opdracht:
Bash
func new --name index --template "Http trigger"
Wijzig de inhoud van index/index.js de volgende code:
Test uw app lokaal. Start de functie-app met behulp van deze opdracht:
Bash
func start
Open http://localhost:7071/api/index in uw webbrowser. Er moet een chatwebpagina worden weergegeven.
Voer een bericht in het chatvak in.
Nadat u de Enter-toets hebt geselecteerd, wordt het bericht weergegeven op de webpagina. Omdat de gebruikersnaam van de SignalR-client niet is ingesteld, verzendt u alle berichten anoniem.
Implementeren naar Azure en verificatie inschakelen
U hebt de functie-app en chat-app lokaal uitgevoerd. Implementeer ze nu in Azure en schakel verificatie en privéberichten in.
De functie-app configureren voor verificatie
Tot nu toe werkt de chat-app anoniem. In Azure gebruikt u App Service-verificatie om de gebruiker te verifiëren. De gebruikers-id of gebruikersnaam van de geverifieerde gebruiker wordt doorgegeven aan de SignalRConnectionInfo binding om verbindingsgegevens te genereren die zijn geverifieerd als de gebruiker.
Voeg een userId eigenschap in de inputSignalR binding in met de waarde {headers.x-ms-client-principal-name}. Deze waarde is een bindingexpressie waarmee de gebruikersnaam van de SignalR-client wordt ingesteld op de naam van de geverifieerde gebruiker. De binding moet er nu uitzien zoals in dit voorbeeld:
Voeg een userId eigenschap in de SignalRConnectionInfo binding in met de waarde {headers.x-ms-client-principal-name}. Deze waarde is een bindingexpressie waarmee de gebruikersnaam van de SignalR-client wordt ingesteld op de naam van de geverifieerde gebruiker. De binding moet er nu uitzien zoals in dit voorbeeld:
Met de --publish-local-settings optie publiceert u uw lokale instellingen van het local.settings.json-bestand naar Azure, zodat u ze niet opnieuw hoeft te configureren in Azure.
App Service-verificatie inschakelen
Azure Functions ondersteunt verificatie met Microsoft Entra ID, Facebook, X, Microsoft-account en Google. U gebruikt Microsoft als id-provider voor deze zelfstudie.
Ga in Azure Portal naar de resourcepagina van uw functie-app.
Selecteer Instellingenverificatie>.
Selecteer Id-provider toevoegen.
Selecteer Microsoft in de lijst met id-providers. Selecteer vervolgens Toevoegen.
Met de voltooide instellingen maakt u een app-registratie die uw id-provider koppelt aan uw functie-app.
Zie de volgende artikelen voor meer informatie over de ondersteunde id-providers:
Als u de resources die u in deze zelfstudie hebt gemaakt, wilt opschonen, verwijdert u de resourcegroep met behulp van Azure Portal.
Waarschuwing
Als u de resourcegroep verwijdert, worden alle resources verwijderd die deze bevat. Als de resourcegroep resources bevat die buiten het bereik van deze zelfstudie vallen, worden ze ook verwijderd.
In deze zelfstudie hebt u geleerd u hoe u Azure Functions gebruikt met de Azure SignalR Service. Meer informatie over het bouwen van serverloze toepassingen in realtime met Azure SignalR Service-bindingen voor Azure Functions:
Wijzig een updatemechanisme voor JavaScript-web-apps van polling naar realtime push-gebaseerde architectuur met SignalR Service, Azure Cosmos DB en Azure Functions. Gebruik Vue.js en JavaScript om SignalR te gebruiken met Visual Studio Code.
Bouw end-to-end-oplossingen in Microsoft Azure om Azure Functions te maken, web-apps te implementeren en te beheren, oplossingen te ontwikkelen die gebruikmaken van Azure Storage en meer.
Een quickstart voor het gebruik van Azure SignalR Service en Azure Functions om een app te maken waarin het aantal GitHub-sterren wordt weergegeven met behulp van JavaScript.
In dit artikel vindt u een overzicht van verbindingsreeks s in Azure SignalR Service, hoe u er een genereert en hoe u er een configureert in een app-server.