CloudEvents-tillägg för Azure Web PubSub-händelselyssnare med AMQP-protokoll
Azure Web PubSub Service beskriver klienthändelser som CloudEvents. CloudEvents är en specifikation för att beskriva händelsedata i vanliga format för att tillhandahålla samverkan mellan tjänster, plattformar och system.
Tjänstens händelselyssnare lyssnar på klienthändelser. Event Hubs är för närvarande den enda händelselyssnareslutpunkten som stöds, vars primära protokoll är AMQP (Advanced Message Queueing Protocol). Web PubSub-tjänsten använder CloudEvents AMQP-protokollbindning för att mappa CloudEvents till AMQP-meddelanden.
Data som skickas från tjänsten till servern är alltid i CloudEvents-format binary
.
Web PubSub CloudEvents-attributtillägg
Det här tillägget definierar de attribut som används av Web PubSub för varje händelse som skapas.
Följande tabell innehåller attributmappning till avsnittet standardegenskaper i ett AMQP-meddelande.
Namn | Beskrivning | Exempel |
---|---|---|
content-type |
MIME-typen RFC-2046 för meddelandets brödtext | application/json |
message-id |
Definierar ett meddelande unikt i en Web PubSub-tjänst i formatet "{connection-id}/{an integer generated by service}" | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1 |
Följande tabell innehåller alla CloudEvents-attributmappning till avsnittet programegenskaper i ett AMQP-meddelande. Varje attributnamn är prefix med cloudEvents:
.
Namn | Beskrivning | Exempel |
---|---|---|
specversion |
Specifikationsversion för molnhändelser är alltid 1.0 | 1.0 |
source |
Anger hubben och anslutnings-ID:t där händelsen kommer ifrån, i formatet "/hubs/{hub}/client/{connectionId}" | /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
id |
Ett heltal som genereras av tjänsten, unikt i händelserna från samma klientanslutning | 1 |
awpsversion |
Azure Web PubSub-specifikationsversion för molnhändelser är alltid 1.0 | 1.0 |
hub |
Hubbens namn där händelsen kommer från | chatt |
eventname |
Namnet på eventet | Ansluten |
type |
Händelsetypen | azure.webpubsub.sys.connect |
connectionid |
ID för klientanslutningen | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
time |
Den tid då tjänsten skickar händelsen i formatet "åååå-MM-ddTHH:mm:ssZ" | 2021-01-01T00:00:00Z |
userid * |
Användarens ID | user1 |
subprotocol * |
Subprotocol-namnet | json.webpubsub.azure.v1 |
connectionstate * |
Definierar tillståndet för anslutningen. Du kan återställa värdet i svarshuvudet för händelsehanterare. Mer information om anslutningstillstånd finns i Web PubSub CloudEvents-attribut. | anystring |
"*" som följer attributnamnet anger att attributet endast finns när värdet inte är null eller tomt.
Händelser
Det här avsnittet visar AMQP-meddelandetexten med attributvärden som är beroende av en specifik klienthändelsetyp. Attributvärden som inte är beroende av en klienthändelsetyp utelämnas.
- Systemhändelse
connect
: Stöds inte av händelselyssnare. - Systemhändelse
connected
- Systemhändelse
disconnected
- Användarhändelser
message
för enkla WebSocket-klienter - Användaranpassad händelse
{custom_event}
för PubSub WebSocket-klienter
Systemhändelse connected
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.connected
cloudEvents:eventname
:connected
Meddelandetexten är alltid tom JSON.
{}
Systemhändelse disconnected
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.disconnected
cloudEvents:eventname
:disconnected
Meddelandetexten innehåller orsaken till att klienten kopplades från.
{"reason":"{Reason}"}
Användarhändelser message
för enkla WebSocket-klienter
content-type
:application/octet-stream
för binär ram;text/plain
för textram;cloudEvents:type
:azure.webpubsub.user.message
Meddelandetexten är vad klienten skickar.
Användaranpassad händelse {custom_event}
för PubSub WebSocket-klienter
content-type
:application/octet-stream
för binär ram;application/json
för JSON-ram;text/plain
för textram;application/x-protobuf
för Protobuf-ram;cloudEvents:type
:azure.webpubsub.user.<event_name>
Följande fall visar hur du skickar händelser med olika datainnehållstyper och mottagna AMQP-meddelandekroppar.
Fall 1: Skicka händelse med textdata:
{
"type": "event",
"event": "<event_name>",
"dataType": "text",
"data": "text data"
}
Mottaget AMQP-meddelandetext:
text data
Fall 2: Skicka händelse med JSON-data:
{
"type": "event",
"event": "<event_name>",
"dataType": "json",
"data": {
"hello": "world"
}
}
Mottaget AMQP-meddelandetext:
{
"hello": "world"
}
Fall 3: Skicka händelse med binära data:
{
"type": "event",
"event": "<event_name>",
"dataType": "binary",
"data": "aGVsbG8gd29ybGQ=" // base64 encoded binary
}
Mottaget AMQP-meddelandetext:
<binary data>