Freigeben über


CloudEvents-Erweiterung für Azure Web PubSub-Ereignislistener mit AMQP-Protokoll

Der Azure Web PubSub-Dienst beschreibt Clientereignisse als CloudEvents. CloudEvents ist eine Spezifikation für die Beschreibung von Ereignisdaten in gängigen Formaten, um Interoperabilität über Dienste, Plattformen und Systeme hinweg bereitzustellen.

Die Ereignislistener des Diensts überwachen Clientereignisse. Event Hubs ist derzeit der einzige unterstützte Ereignislistenerendpunkt, dessen primäres Protokoll AMQP (Advanced Message Queueing Protocol) ist. Der Web PubSub-Dienst verwendet cloudEvents AMQP-Protokollbindung , um CloudEvents AMQP-Nachrichten zuzuordnen.

Die vom Dienst an den Server gesendeten Daten befinden sich immer im CloudEvents-Format binary .

Web PubSub CloudEvents-Attributerweiterung

Diese Erweiterung definiert die Attribute, die von Web PubSub für jedes erzeugte Ereignis verwendet werden.

Die folgende Tabelle enthält Attribute, die dem Standardeigenschaftenabschnitt einer AMQP-Nachricht zugeordnet sind.

Name Beschreibung Beispiel
content-type Der RFC-2046-MIME-Typ für den Nachrichtentext Anwendung/json
message-id Definiert eine Nachricht in einem Web PubSub-Dienst eindeutig im Format "{connection-id}/{an integer generated by service}". 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1

Die folgende Tabelle enthält alle CloudEvents-Attribute, die dem Abschnitt " Anwendungseigenschaften " einer AMQP-Nachricht zugeordnet sind. Jedem Attributnamen wird ein Präfix vorangestellt cloudEvents:.

Name Beschreibung Beispiel
specversion Spezifikationsversion von Cloudereignissen ist immer 1.0 1.0
source Gibt den Hub und die Verbindungs-ID an, von der das Ereignis stammt, im Format "/hubs/{hub}/client/{connectionId}" /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
id Eine ganze Zahl, die vom Dienst generiert wird, eindeutig in den Ereignissen aus derselben Clientverbindung 1
awpsversion Azure Web PubSub-Spezifikationsversion von Cloudereignissen ist immer 1.0. 1.0
hub Der Hubname, von dem das Ereignis stammt Chat
eventname Der Name des Ereignisses verbunden
type Der Ereignistyp azure.webpubsub.sys.connect
connectionid Die ID der Clientverbindung 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
time Der Zeitpunkt, zu dem der Dienst das Ereignis sendet, im Format "yyyy-MM-ddTHH:mm:ssZ" 2021-01-01T00:00:00Z
userid* Die ID des Benutzers user1
subprotocol* Der Name des Unterprotocols json.webpubsub.azure.v1
connectionstate* Definiert den Status für die Verbindung. Sie können den Wert im Antwortheader von Ereignishandlern zurücksetzen. Weitere Informationen zum Verbindungsstatus finden Sie unter Web PubSub CloudEvents-Attribute. anystring

Der Attributname "*" gibt an, dass das Attribut nur vorhanden ist, wenn der Wert nicht null oder leer ist.

Ereignisse

In diesem Abschnitt wird der AMQP-Nachrichtentext mit den Attributwerten angezeigt, die von einem bestimmten Clientereignistyp abhängen. Attributwerte, die nicht von einem Clientereignistyp abhängen, werden weggelassen.

Systemereignis connected

  • content-type: application/json
  • cloudEvents:type: azure.webpubsub.sys.connected
  • cloudEvents:eventname: connected

Der Nachrichtentext ist immer leer JSON.

{}

Systemereignis disconnected

  • content-type: application/json
  • cloudEvents:type: azure.webpubsub.sys.disconnected
  • cloudEvents:eventname: disconnected

Der Nachrichtentext enthält den Grund, warum der Client die Verbindung getrennt hat.

{"reason":"{Reason}"}

Benutzerereignisse message für die einfachen WebSocket-Clients

  • content-type: application/octet-stream für binären Rahmen; text/plain für Textrahmen;
  • cloudEvents:type: azure.webpubsub.user.message

Der Nachrichtentext sendet den Client.

Benutzerdefiniertes Benutzerereignis {custom_event} für PubSub WebSocket-Clients

  • content-type: application/octet-stream für binären Frame; application/json für JSON-Frame; text/plain für Textrahmen; application/x-protobuf für Protobuf-Frame;
  • cloudEvents:type: azure.webpubsub.user.<event_name>

In den folgenden Fällen wird gezeigt, wie Ereignisse mit unterschiedlichen Datentypen und den empfangenen AMQP-Nachrichtentexten gesendet werden.

Fall 1: Senden eines Ereignisses mit Textdaten:

{
    "type": "event",
    "event": "<event_name>",
    "dataType": "text",
    "data": "text data"
}

Empfangener AMQP-Nachrichtentext:

text data

Fall 2: Senden eines Ereignisses mit JSON-Daten:

{
    "type": "event",
    "event": "<event_name>",
    "dataType": "json",
    "data": {
        "hello": "world"
     }
}

Empfangener AMQP-Nachrichtentext:

{
    "hello": "world"
}

Fall 3: Senden eines Ereignisses mit Binärdaten:

{
    "type": "event",
    "event": "<event_name>",
    "dataType": "binary",
    "data": "aGVsbG8gd29ybGQ=" // base64 encoded binary
}

Empfangener AMQP-Nachrichtentext:

<binary data>