Skicka händelser från Azure SignalR Service till Event Grid
Azure Event Grid är en fullständigt hanterad händelseroutningstjänst som ger enhetlig händelseförbrukning med hjälp av en pub-sub-modell. I den här guiden använder du Azure CLI för att skapa en Azure SignalR Service, prenumerera på anslutningshändelser och sedan distribuera ett exempelwebbprogram för att ta emot händelserna. Slutligen kan du ansluta och koppla från och se händelsenyttolasten i exempelprogrammet.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Azure CLI-kommandona i den här artikeln är formaterade för Bash-gränssnittet . Om du använder ett annat gränssnitt som PowerShell eller Kommandotolken kan du behöva justera radfortsättningstecken eller variabeltilldelningsrader i enlighet med detta. Den här artikeln använder variabler för att minimera mängden kommandoredigering som krävs.
Viktigt!
Råa anslutningssträng visas endast i den här artikeln i demonstrationssyfte.
En anslutningssträng innehåller den auktoriseringsinformation som krävs för att ditt program ska få åtkomst till Azure SignalR Service. Åtkomstnyckeln i anslutningssträng liknar ett rotlösenord för din tjänst. Skydda alltid dina åtkomstnycklar i produktionsmiljöer. Använd Azure Key Vault för att hantera och rotera dina nycklar på ett säkert sätt och skydda dina anslutningssträng med hjälp av Microsoft Entra-ID och auktorisera åtkomst med Microsoft Entra-ID.
Undvik att distribuera åtkomstnycklar till andra användare, hårdkoda dem eller spara dem var som helst i oformaterad text som är tillgänglig för andra. Rotera dina nycklar om du tror att de har komprometterats.
Skapa en resursgrupp
En Azure-resursgrupp är en logisk container där du distribuerar och hanterar dina Azure-resurser. Kommandot az group create skapar en resursgrupp med namnet myResourceGroup i regionen eastus . Om du vill använda ett annat namn för resursgruppen anger du RESOURCE_GROUP_NAME
ett annat värde.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
Skapa en Azure SignalR Service
Distribuera sedan en Azure Signals Service till resursgruppen med följande kommandon.
SIGNALR_NAME=SignalRTestSvc
az signalr create --resource-group $RESOURCE_GROUP_NAME --name $SIGNALR_NAME --sku Free_F1
När SignalR Service har skapats returnerar Azure CLI utdata som liknar följande exempel:
{
"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"
}
Skapa en händelseslutpunkt
I det här avsnittet använder du en Resource Manager-mall som finns på en GitHub-lagringsplats för att distribuera ett fördefiniert exempelwebbprogram till Azure App Service. Senare prenumererar du på registrets Event Grid-händelser och anger den här appen som den slutpunkt som händelserna skickas till.
Om du vill distribuera exempelappen anger du SITE_NAME
ett unikt namn för webbappen och kör följande kommandon. Webbplatsnamnet måste vara unikt i Azure eftersom det ingår i webbappens fullständigt kvalificerade domännamn (FQDN). I ett senare avsnitt navigerar du till appens fullständiga domännamn i en webbläsare för att visa registrets händelser.
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
När distributionen har slutförts (det kan ta några minuter) öppnar du webbläsaren och går sedan till webbappen för att kontrollera att den körs:
http://<your-site-name>.azurewebsites.net
Aktivera Event Grid-resursprovidern
Om du inte tidigare har använt Event Grid i din Azure-prenumeration kan du behöva registrera Event Grid-resursprovidern. Registrera providern genom att köra följande kommando:
az provider register --namespace Microsoft.EventGrid
Det kan ta en stund innan registreringen är klar. Kontrollera statusen genom att köra följande kommando:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
När
registrationState
ärRegistered
kan du fortsätta.
Prenumerera på registerhändelser
I Event Grid prenumererar du på ett ämne för att berätta vilka händelser du vill spåra och var de ska skickas. Kommandot az eventgrid event-subscription create
prenumererar på Azure SignalR Service som du skapade och anger webbappens URL som den slutpunkt som den ska skicka händelser till. Miljövariablerna som du fyllde i i tidigare avsnitt återanvänds här, så inga ändringar krävs.
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
När prenumerationen har slutförts bör du se utdata som liknar följande exempel:
{
"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"
}
Utlösa registerhändelser
Växla till tjänstläget till Serverless Mode
och konfigurera en klientanslutning till SignalR Service. Du kan använda Serverlöst exempel som referens.
Råa anslutningssträng visas endast i den här artikeln i demonstrationssyfte. Skydda alltid dina åtkomstnycklar i produktionsmiljöer. Använd Azure Key Vault för att hantera och rotera dina nycklar på ett säkert sätt och skydda dina anslutningssträng med hjälp av Microsoft Entra-ID och auktorisera åtkomst med Microsoft Entra-ID.
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 NegotiationServer
dotnet user-secrets set Azure:SignalR:ConnectionString "<Connection String>"
dotnet run
# Use a separate command line
# Start a client
cd SignalRClient
dotnet run
Visa registerhändelser
Nu har du anslutit en klient till SignalR Service. Gå till webbappen för Loggboken i Event Grid så bör du se en ClientConnectionConnected
händelse. Om du avslutar klienten visas även en ClientConnectionDisconnected
händelse.