Gebeurtenissen van Azure SignalR Service naar Event Grid verzenden
Azure Event Grid is een volledig beheerde service voor gebeurtenisroutering die uniform gebeurtenisverbruik biedt met behulp van een pub-submodel. In deze handleiding gebruikt u de Azure CLI om een Azure SignalR-service te maken, u te abonneren op verbindingsgebeurtenissen en vervolgens een voorbeeldwebtoepassing te implementeren om de gebeurtenissen te ontvangen. Ten slotte kunt u verbinding maken en de verbinding verbreken en de nettolading van de gebeurtenis bekijken in de voorbeeldtoepassing.
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Vereisten
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- De Azure CLI-opdrachten in dit artikel zijn opgemaakt voor de Bash-shell . Als u een andere shell gebruikt, zoals PowerShell of opdrachtprompt, moet u mogelijk regelvervolgtekens of variabele toewijzingslijnen dienovereenkomstig aanpassen. In dit artikel worden variabelen gebruikt om de benodigde hoeveelheid bewerking van opdrachten te minimaliseren.
Een brongroep maken
Een Azure-resourcegroep is een logische container waarin u uw Azure-resources implementeert en beheert. Met de opdracht az group create maakt u een resourcegroep met de naam myResourceGroup in de regio Eastus . Als u een andere naam voor uw resourcegroep wilt gebruiken, stelt u deze in RESOURCE_GROUP_NAME
op een andere waarde.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
Een SignalR-service maken
Implementeer vervolgens een Azure Signals Service in de resourcegroep met de volgende opdrachten.
SIGNALR_NAME=SignalRTestSvc
az signalr create --resource-group $RESOURCE_GROUP_NAME --name $SIGNALR_NAME --sku Free_F1
Zodra de SignalR-service is gemaakt, retourneert de Azure CLI uitvoer die vergelijkbaar is met het volgende voorbeeld:
{
"externalIp": "13.76.156.152",
"hostName": "clitest.servicedev.signalr.net",
"hostNamePrefix": "clitest",
"id": "/subscriptions/28cf13e2-c598-4aa9-b8c8-098441f0827a/resourceGroups/clitest1/providers/Microsoft.SignalRService/SignalR/clitest",
"location": "southeastasia",
"name": "clitest",
"provisioningState": "Succeeded",
"publicPort": 443,
"resourceGroup": "clitest1",
"serverPort": 443,
"sku": {
"capacity": 1,
"family": null,
"name": "Free_F1",
"size": "F1",
"tier": "Free"
},
"tags": null,
"type": "Microsoft.SignalRService/SignalR",
"version": "1.0"
}
Een gebeurteniseindpunt maken
In deze sectie gebruikt u een Resource Manager-sjabloon in een GitHub-opslagplaats om een vooraf gemaakte voorbeeldwebtoepassing te implementeren in Azure-app Service. Later abonneert u zich op de Event Grid-gebeurtenissen van uw register en geeft u deze app op als het eindpunt waarnaar de gebeurtenissen worden verzonden.
Als u de voorbeeld-app wilt implementeren, stelt u SITE_NAME
deze in op een unieke naam voor uw web-app en voert u de volgende opdrachten uit. De sitenaam moet uniek zijn binnen Azure omdat deze deel uitmaakt van de FQDN (Fully Qualified Domain Name) van de web-app. In een latere sectie gaat u naar de FQDN van de app in een webbrowser om de gebeurtenissen van uw register weer te geven.
SITE_NAME=<your-site-name>
az deployment group create \
--resource-group $RESOURCE_GROUP_NAME \
--template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
--parameters siteName=$SITE_NAME hostingPlanName=$SITE_NAME-plan
Zodra de implementatie is voltooid (dit kan enkele minuten duren), opent u uw browser en gaat u naar uw web-app om te controleren of deze wordt uitgevoerd:
http://<your-site-name>.azurewebsites.net
De Event Grid-resourceprovider inschakelen
Als u Event Grid in uw Azure-abonnement nog niet eerder hebt gebruikt, moet u mogelijk de Event Grid-resourceprovider registreren. Voer de volgende opdracht uit om de provider te registreren:
az provider register --namespace Microsoft.EventGrid
Het kan even duren voordat de registratie is voltooid. Voer de volgende opdracht uit om de status te controleren:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Wanneer
registrationState
Registered
is, bent u klaar om door te gaan.
Abonneren op register gebeurtenissen
In Event Grid abonneert u zich op een onderwerp om aan te geven welke gebeurtenissen u wilt bijhouden en waar ze moeten worden verzonden. De opdracht az eventgrid event-subscription create
abonneert zich op de Azure SignalR-service die u hebt gemaakt en geeft de URL van uw web-app op als het eindpunt waarnaar gebeurtenissen moeten worden verzonden. De omgevingsvariabelen die u in eerdere secties hebt ingevuld, worden hier opnieuw gebruikt, dus er zijn geen wijzigingen vereist.
SIGNALR_SERVICE_ID=$(az signalr show --resource-group $RESOURCE_GROUP_NAME --name $SIGNALR_NAME --query id --output tsv)
APP_ENDPOINT=https://$SITE_NAME.azurewebsites.net/api/updates
az eventgrid event-subscription create \
--name event-sub-signalr \
--source-resource-id $SIGNALR_SERVICE_ID \
--endpoint $APP_ENDPOINT
Wanneer het abonnement is voltooid, ziet u uitvoer die vergelijkbaar is met het volgende voorbeeld:
{
"deadLetterDestination": null,
"destination": {
"endpointBaseUrl": "https://$SITE_NAME.azurewebsites.net/api/updates",
"endpointType": "WebHook",
"endpointUrl": null
},
"filter": {
"includedEventTypes": [
"Microsoft.SignalRService.ClientConnectionConnected",
"Microsoft.SignalRService.ClientConnectionDisconnected"
],
"isSubjectCaseSensitive": null,
"subjectBeginsWith": "",
"subjectEndsWith": ""
},
"id": "/subscriptions/28cf13e2-c598-4aa9-b8c8-098441f0827a/resourceGroups/myResourceGroup/providers/Microsoft.SignalRService/SignalR/SignalRTestSvc/providers/Microsoft.EventGrid/eventSubscriptions/event-sub-signalr",
"labels": null,
"name": "event-sub-signalr",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"retryPolicy": {
"eventTimeToLiveInMinutes": 1440,
"maxDeliveryAttempts": 30
},
"topic": "/subscriptions/28cf13e2-c598-4aa9-b8c8-098441f0827a/resourceGroups/myResourceGroup/providers/microsoft.signalrservice/signalr/SignalRTestSvc",
"type": "Microsoft.EventGrid/eventSubscriptions"
}
Register gebeurtenissen activeren
Schakel over naar de servicemodus en Serverless Mode
stel een clientverbinding in met de SignalR-service. U kunt een serverloos voorbeeld gebruiken als referentie.
git clone git@github.com:aspnet/AzureSignalR-samples.git
cd samples/Management
# Start the negotiation server
# Negotiation server is responsible for generating access token for clients
cd NegotitationServer
dotnet user-secrets set Azure:SignalR:ConnectionString "<Connection String>"
dotnet run
# Use a separate command line
# Start a client
cd SignalRClient
dotnet run
Register gebeurtenissen weergeven
U hebt nu een client verbonden met de SignalR-service. Ga naar uw Event Grid Viewer-web-app en u ziet een ClientConnectionConnected
gebeurtenis. Als u de client beëindigt, ziet u ook een ClientConnectionDisconnected
gebeurtenis.