Delen via


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 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>