CloudEvents-Erweiterung für den Azure Web PubSub-Ereignislistener mit AMQP-Protokoll
Der Azure Web PubSub-Dienst beschreibt Clientereignisse als CloudEvents. CloudEvents ist eine Spezifikation zum Beschreiben von Ereignisdaten in gängigen Formaten, um die Interoperabilität zwischen Diensten, Plattformen und Systemen zu gewährleisten.
Die Ereignislistener des Diensts lauschen auf 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 die AMQP-Protokollbindung von CloudEvents, um AMQP-Nachrichten CloudEvents zuzuordnen.
Die vom Dienst an den Server gesendeten Daten haben immer das CloudEvents-Format binary
.
Web PubSub CloudEvents-Attributerweiterung
Diese Erweiterung definiert Attribute, die vom Web PubSub-Dienst für jedes von ihm erzeugte Ereignis verwendet werden.
Die folgende Tabelle enthält Attribute, die dem Abschnitt Standardeigenschaften einer AMQP-Nachricht zugeordnet sind.
Name | Beschreibung des Dataflows | Beispiel |
---|---|---|
content-type |
Der MIME-Typ „RFC-2046“ für den Nachrichtentext | Anwendung/json |
message-id |
Definiert eindeutig eine Nachricht in einem Web PubSub-Dienst im Format „{Verbindungs-ID}/{vom Dienst generierte ganze Zahl}“. | 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 das Präfix cloudEvents:
vorangestellt.
Name | Beschreibung des Dataflows | Beispiel |
---|---|---|
specversion |
Version der Spezifikation für Cloudereignisse, immer 1.0 | 1.0 |
source |
Gibt den Hub und die Verbindungs-ID, von denen das Ereignis stammt, im Format „/hubs/{Hub}/client/{Verbindungs-ID}“ an. | /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
id |
Eine vom Dienst generierte ganze Zahl, die in den Ereignissen der gleichen Clientverbindung eindeutig ist | 1 |
awpsversion |
Version der Azure Web PubSub-Spezifikation für Cloudereignisse, immer 1.0 | 1.0 |
hub |
Der Hubname, von dem das Ereignis stammt | Chat |
eventname |
Der Name des Ereignisses | connected |
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 gesendet hat, im Format „yyyy-MM-ddTHH:mm:ssZ“ | 2021-01-01T00:00:00Z |
userid * |
Die ID des Benutzers | user1 |
subprotocol * |
Der Name des Unterprotokolls | json.webpubsub.azure.v1 |
connectionstate * |
Legt den Status der Verbindung fest. Sie können den Wert im Antwortheader von Ereignishandlern zurücksetzen. Weitere Informationen zum Verbindungsstatus finden Sie unter Attribute. | anystring |
Das auf den Attributnamen folgende Sternchen (*) 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
connect
: Wird von Ereignislistenern nicht unterstützt. - System
connected
ereignis - System
disconnected
ereignis - Benutzerereignisse vom Typ
message
für einfache WebSocket-Clients - Benutzerdefiniertes Ereignis
{custom_event}
für PubSub WebSocket-Clients
Systemconnected
ereignis
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.connected
cloudEvents:eventname
:connected
Der Nachrichtentext ist immer leerer JSON-Code.
{}
Systemdisconnected
ereignis
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.disconnected
cloudEvents:eventname
:disconnected
Der Nachrichtentext enthält den Grund, warum die Verbindung mit dem Client getrennt wurde.
{"reason":"{Reason}"}
Benutzerereignisse vom Typ message
für einfache WebSocket-Clients
content-type
:application/octet-stream
für binären Frame;text/plain
für Textframe;cloudEvents:type
:azure.webpubsub.user.message
Der Nachrichtentext besteht aus den vom Client gesendeten Informationen.
Benutzerdefiniertes Ereignis {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 Textframe;application/x-protobuf
für Protobuf-FramecloudEvents:type
:azure.webpubsub.user.<event_name>
Die folgenden Fälle zeigen, wie Ereignisse mit unterschiedlichen Dateninhaltstypen und den empfangenen AMQP-Nachrichtentexten gesendet werden.
Fall 1: Ereignis mit Textdaten versenden:
{
"type": "event",
"event": "<event_name>",
"dataType": "text",
"data": "text data"
}
Empfangener AMQP-Nachrichtentext:
text data
Fall 2: Ereignis mit JSON-Daten versenden:
{
"type": "event",
"event": "<event_name>",
"dataType": "json",
"data": {
"hello": "world"
}
}
Empfangener AMQP-Nachrichtentext:
{
"hello": "world"
}
Fall 3: Ereignis mit Binärdaten versenden:
{
"type": "event",
"event": "<event_name>",
"dataType": "binary",
"data": "aGVsbG8gd29ybGQ=" // base64 encoded binary
}
Empfangener AMQP-Nachrichtentext:
<binary data>