Események küldése az Azure SignalR Service-ből az Event Gridbe
Az Azure Event Grid egy teljes körűen felügyelt esemény-útválasztási szolgáltatás, amely egységes eseményfelhasználást biztosít egy pub-almodell használatával. Ebben az útmutatóban az Azure CLI használatával hoz létre egy Azure SignalR-szolgáltatást, feliratkozik a kapcsolati eseményekre, majd üzembe helyez egy minta webalkalmazást az események fogadásához. Végül csatlakozhat és leválaszthatja a kapcsolatot, és megtekintheti az esemény hasznos adatait a mintaalkalmazásban.
If you don't have an Azure subscription, create an Azure free account before you begin.
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- A cikkben szereplő Azure CLI-parancsok a Bash-rendszerhéjhoz vannak formázva. Ha más rendszerhéjat használ, például a PowerShellt vagy a parancssort, előfordulhat, hogy ennek megfelelően módosítania kell a sor folytatásának karaktereit vagy a változó hozzárendelési sorokat. Ez a cikk változókkal minimalizálja a parancsszerkesztés szükséges mennyiségét.
Erőforráscsoport létrehozása
Az Azure-erőforráscsoportok olyan logikai tárolók, amelyekben üzembe helyezheti és kezelheti az Azure-erőforrásokat. Az az group create parancs létrehoz egy myResourceGroup nevű erőforráscsoportot az eastus régióban. Ha más nevet szeretne használni az erőforráscsoporthoz, állítsa másik RESOURCE_GROUP_NAME
értékre.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
SignalR szolgáltatás létrehozása
Ezután helyezzen üzembe egy Azure Signals Service-t az erőforráscsoportban az alábbi parancsokkal.
SIGNALR_NAME=SignalRTestSvc
az signalr create --resource-group $RESOURCE_GROUP_NAME --name $SIGNALR_NAME --sku Free_F1
A SignalR szolgáltatás létrehozása után az Azure CLI az alábbi példához hasonló kimenetet ad vissza:
{
"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"
}
Eseményvégpont létrehozása
Ebben a szakaszban egy GitHub-adattárban található Resource Manager-sablont használ egy előre összeállított minta webalkalmazás üzembe helyezéséhez a szolgáltatás Azure-alkalmazás. Később előfizet a beállításjegyzék Event Grid-eseményeire, és ezt az alkalmazást adja meg végpontként, amelyre az eseményeket elküldi.
A mintaalkalmazás üzembe helyezéséhez állítsa be SITE_NAME
a webalkalmazás egyedi nevét, és hajtsa végre a következő parancsokat. A webhely nevének egyedinek kell lennie az Azure-ban, mert a webalkalmazás teljes tartománynevének (FQDN) részét képezi. Egy későbbi szakaszban egy webböngészőben navigálhat az alkalmazás teljes tartománynevére a beállításjegyzék eseményeinek megtekintéséhez.
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
Ha az üzembe helyezés sikeres (eltarthat néhány percig), nyissa meg a böngészőt, majd nyissa meg a webalkalmazást, és győződjön meg róla, hogy fut:
http://<your-site-name>.azurewebsites.net
Az Event Grid-erőforrás-szolgáltató engedélyezése
Ha korábban nem használta az Event Gridet az Azure-előfizetésében, előfordulhat, hogy regisztrálnia kell az Event Grid-erőforrás-szolgáltatót. A szolgáltató regisztrálásához futtassa az alábbi parancsot:
az provider register --namespace Microsoft.EventGrid
Eltarthat egy ideig, amíg a regisztráció befejeződik. Az állapot ellenőrzéséhez futtassa a következő parancsot:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Ha a
registrationState
Registered
értékű, készen áll a folytatásra.
Feliratkozás beállításjegyzék-eseményekre
Az Event Gridben feliratkozhat egy témakörre , amelyből megtudhatja, hogy mely eseményeket szeretné nyomon követni, és hová szeretné elküldeni őket. A parancs az eventgrid event-subscription create
feliratkozik a létrehozott Azure SignalR Szolgáltatásra, és megadja a webalkalmazás URL-címét végpontként, amelyre eseményeket kell küldenie. A korábbi szakaszokban kitöltött környezeti változók itt lesznek újra felhasználva, ezért nincs szükség szerkesztésre.
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
Az előfizetés befejezésekor az alábbi példához hasonló kimenetnek kell megjelennie:
{
"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"
}
Beállításjegyzék eseményeinek aktiválása
Váltson a szolgáltatás üzemmódra, Serverless Mode
és állítson be egy ügyfélkapcsolatot a SignalR szolgáltatással. Hivatkozásként használhat kiszolgáló nélküli mintát .
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
Beállításjegyzék-események megtekintése
Most már csatlakoztatta az ügyfelet a SignalR szolgáltatáshoz. Lépjen az Event Grid Viewer webalkalmazásra, és meg kell jelennie egy eseménynek ClientConnectionConnected
. Ha leállítja az ügyfelet ClientConnectionDisconnected
, egy esemény is megjelenik.