Odesílání událostí ze služby Azure SignalR Service do služby Event Grid
Azure Event Grid je plně spravovaná služba směrování událostí, která poskytuje jednotné využití událostí pomocí modelu pub-sub. V této příručce pomocí Azure CLI vytvoříte službu Azure SignalR, přihlásíte se k odběru událostí připojení a pak nasadíte ukázkovou webovou aplikaci pro příjem událostí. Nakonec se můžete připojit a odpojit a zobrazit datovou část události v ukázkové aplikaci.
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
Předpoklady
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Příkazy Azure CLI v tomto článku jsou formátované pro prostředí Bash . Pokud používáte jiné prostředí, jako je PowerShell nebo příkazový řádek, budete možná muset odpovídajícím způsobem upravit znaky pokračování řádku nebo řádky přiřazení proměnných. Tento článek používá proměnné k minimalizaci požadovaného množství úprav příkazů.
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logický kontejner, ve kterém nasazujete a spravujete prostředky Azure. Příkaz az group create vytvoří skupinu prostředků myResourceGroup v oblasti eastus. Pokud chcete pro skupinu prostředků použít jiný název, nastavte RESOURCE_GROUP_NAME
na jinou hodnotu.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
Vytvoření služby SignalR
V dalším kroku nasaďte službu Azure Signal Service do skupiny prostředků pomocí následujících příkazů.
SIGNALR_NAME=SignalRTestSvc
az signalr create --resource-group $RESOURCE_GROUP_NAME --name $SIGNALR_NAME --sku Free_F1
Po vytvoření služby SignalR vrátí Azure CLI výstup podobný následujícímu příkladu:
{
"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"
}
Vytvoření koncového bodu události
V této části použijete šablonu Resource Manageru umístěnou v úložišti GitHub k nasazení předem připravené ukázkové webové aplikace do služby Aplikace Azure Service. Později se přihlásíte k odběru událostí služby Event Grid vašeho registru a určíte tuto aplikaci jako koncový bod, do kterého se události odesílají.
Pokud chcete nasadit ukázkovou aplikaci, nastavte SITE_NAME
pro webovou aplikaci jedinečný název a spusťte následující příkazy. Název webu musí být v rámci Azure jedinečný, protože je součástí plně kvalifikovaného názvu domény (FQDN) webové aplikace. V další části přejdete do plně kvalifikovaného názvu domény aplikace ve webovém prohlížeči a zobrazíte události registru.
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
Jakmile bude nasazení úspěšné (může to trvat několik minut), otevřete prohlížeč a pak přejděte do webové aplikace, abyste měli jistotu, že je spuštěná:
http://<your-site-name>.azurewebsites.net
Povolení poskytovatele prostředků Event Gridu
Pokud jste službu Event Grid ve svém předplatném Azure ještě nepoužívali, možná budete muset zaregistrovat poskytovatele prostředků Event Gridu. Spuštěním následujícího příkazu zaregistrujte poskytovatele:
az provider register --namespace Microsoft.EventGrid
Dokončení registrace může chvíli trvat. Pokud chcete zkontrolovat stav, spusťte následující příkaz:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Jakmile
registrationState
jeRegistered
, můžete pokračovat.
Přihlášení k odběru událostí registru
Ve službě Event Grid se přihlásíte k odběru tématu , abyste mu řekli, které události chcete sledovat a kam je chcete odeslat. Příkaz az eventgrid event-subscription create
se přihlásí ke službě Azure SignalR, kterou jste vytvořili, a jako koncový bod, do kterého má odesílat události, určuje adresu URL vaší webové aplikace. Tady se znovu používají proměnné prostředí, které jste naplnili v předchozích částech, takže nejsou potřeba žádné úpravy.
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
Po dokončení předplatného by se měl zobrazit výstup podobný následujícímu příkladu:
{
"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"
}
Aktivace událostí registru
Přepněte do režimu Serverless Mode
služby a nastavte připojení klienta ke službě SignalR. Jako referenci můžete použít bezserverovou ukázku .
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
Zobrazení událostí registru
Právě jste připojili klienta ke službě SignalR. Přejděte do webové aplikace Event Grid Viewer a měla by se ClientConnectionConnected
zobrazit událost. Pokud klienta ukončíte, zobrazí ClientConnectionDisconnected
se také událost.