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.
Požadavky
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ů.
Důležité
Nezpracované připojovací řetězec se v tomto článku zobrazují jenom pro demonstrační účely.
Připojovací řetězec obsahuje autorizační informace potřebné pro vaši aplikaci pro přístup ke službě Azure SignalR. Přístupový klíč uvnitř připojovací řetězec je podobný kořenovému heslu pro vaši službu. V produkčních prostředích vždy chraňte přístupové klíče. Pomocí služby Azure Key Vault můžete bezpečně spravovat a obměňovat klíče a zabezpečit připojovací řetězec pomocí ID Microsoft Entra a autorizovat přístup pomocí Microsoft Entra ID.
Vyhněte se distribuci přístupových klíčů ostatním uživatelům, jejich pevnému kódování nebo jejich uložení kdekoli ve formátu prostého textu, který je přístupný ostatním uživatelům. Otočte klíče, pokud se domníváte, že mohly být ohroženy.
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 .
Nezpracované připojovací řetězec se v tomto článku zobrazují jenom pro demonstrační účely. V produkčních prostředích vždy chraňte přístupové klíče. Pomocí služby Azure Key Vault můžete bezpečně spravovat a obměňovat klíče a zabezpečit připojovací řetězec pomocí ID Microsoft Entra a autorizovat přístup pomocí 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
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.