CloudEvents-extensie voor Azure Web PubSub-gebeurtenislistener met AMQP-protocol
De Azure Web PubSub-service beschrijft clientevenementen als CloudEvents. CloudEvents is een specificatie voor het beschrijven van gebeurtenisgegevens in algemene indelingen om interoperabiliteit te bieden tussen services, platforms en systemen.
De gebeurtenislisteners van de service luisteren naar clientevenementen. Event Hubs is momenteel het enige ondersteunde eindpunt voor gebeurtenislistener, waarvan het primaire protocol AMQP (Advanced Message Queueing Protocol) is. De Web PubSub-service maakt gebruik van CloudEvents AMQP-protocolbinding om CloudEvents toe te wijzen aan AMQP-berichten.
De gegevens die van de service naar de server worden verzonden, hebben altijd de CloudEvents-indeling binary
.
Kenmerkextensie Web PubSub CloudEvents
Deze extensie definieert de kenmerken die door Web PubSub worden gebruikt voor elke gebeurtenis die wordt geproduceerd.
De volgende tabel bevat kenmerken die zijn toegewezen aan de sectie Standaardeigenschappen van een AMQP-bericht.
Naam | Omschrijving | Voorbeeld |
---|---|---|
content-type |
Het MIME-type RFC-2046 voor de hoofdtekst van het bericht | application/json |
message-id |
Definieert een bericht uniek in een Web PubSub-service, in de indeling {connection-id}/{an integer generated by service}" | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1 |
De volgende tabel bevat alle CloudEvents-kenmerken die zijn toegewezen aan de sectie toepassingseigenschappen van een AMQP-bericht. Elke kenmerknaam wordt voorafgegaan door cloudEvents:
.
Naam | Omschrijving | Voorbeeld |
---|---|---|
specversion |
Specificatieversie van cloudevenementen is altijd 1.0 | 1.0 |
source |
Geeft de hub en de verbindings-id aan van waaruit de gebeurtenis afkomstig is, in de indeling '/hubs/{hub}/client/{connectionId}' | /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
id |
Een geheel getal dat door de service wordt gegenereerd, uniek in de gebeurtenissen van dezelfde clientverbinding | 1 |
awpsversion |
Azure Web PubSub-specificatieversie van Cloud-gebeurtenissen is altijd 1.0 | 1.0 |
hub |
De naam van de hub waar de gebeurtenis vandaan komt | chat |
eventname |
De naam van de gebeurtenis | Aangesloten |
type |
Het gebeurtenistype | azure.webpubsub.sys.connect |
connectionid |
De id van de clientverbinding | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
time |
Het tijdstip waarop de service de gebeurtenis verzendt, in de notatie 'jjjj-MM-ddTHH:mm:ssZ' | 2021-01-01T00:00:00Z |
userid * |
De id van de gebruiker | gebruiker1 |
subprotocol * |
De naam van het subprotocol | json.webpubsub.azure.v1 |
connectionstate * |
Hiermee definieert u de status voor de verbinding. U kunt de waarde opnieuw instellen in de antwoordheader van gebeurtenis-handlers. Zie Kenmerken van Web PubSub CloudEvents voor meer informatie over de verbindingsstatus. | anystring |
De '*' na de kenmerknaam geeft aan dat het kenmerk alleen aanwezig is wanneer de waarde niet null of leeg is.
Gebeurtenissen
In deze sectie ziet u de hoofdtekst van het AMQP-bericht met de kenmerkwaarden die afhankelijk zijn van een specifiek client-gebeurtenistype. Kenmerkwaarden die niet afhankelijk zijn van een client-gebeurtenistype, worden weggelaten.
- Systeem
connect
gebeurtenis: niet ondersteund door gebeurtenislisteners. - Systeem
connected
gebeurtenis - Systeem
disconnected
gebeurtenis - Gebruikers gebeurtenissen
message
voor de eenvoudige WebSocket-clients - Aangepaste gebeurtenis
{custom_event}
van gebruiker voor PubSub WebSocket-clients
Systeem connected
gebeurtenis
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.connected
cloudEvents:eventname
:connected
De hoofdtekst van het bericht is altijd lege JSON.
{}
Systeem disconnected
gebeurtenis
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.disconnected
cloudEvents:eventname
:disconnected
De hoofdtekst van het bericht bevat de reden waarom de client niet is verbonden.
{"reason":"{Reason}"}
Gebruikers gebeurtenissen message
voor de eenvoudige WebSocket-clients
content-type
:application/octet-stream
voor binair frame;text/plain
voor tekstframe;cloudEvents:type
:azure.webpubsub.user.message
De hoofdtekst van het bericht is wat de client verzendt.
Aangepaste gebeurtenis {custom_event}
van gebruiker voor PubSub WebSocket-clients
content-type
:application/octet-stream
voor binair frame;application/json
voor JSON-frame;text/plain
voor tekstkader;application/x-protobuf
voor Protobuf-frame;cloudEvents:type
:azure.webpubsub.user.<event_name>
In de volgende gevallen ziet u hoe u gebeurtenissen verzendt met verschillende gegevensinhoudstypen en de ontvangen AMQP-berichtteksten.
Case 1: gebeurtenis met tekstgegevens verzenden:
{
"type": "event",
"event": "<event_name>",
"dataType": "text",
"data": "text data"
}
Berichttekst amqp ontvangen:
text data
Case 2: gebeurtenis verzenden met JSON-gegevens:
{
"type": "event",
"event": "<event_name>",
"dataType": "json",
"data": {
"hello": "world"
}
}
Berichttekst amqp ontvangen:
{
"hello": "world"
}
Case 3: gebeurtenis verzenden met binaire gegevens:
{
"type": "event",
"event": "<event_name>",
"dataType": "binary",
"data": "aGVsbG8gd29ybGQ=" // base64 encoded binary
}
Berichttekst amqp ontvangen:
<binary data>