Rozšíření CloudEvents pro naslouchací proces událostí Azure Web PubSub s protokolem AMQP
Služba Azure Web PubSub popisuje události klienta jako CloudEvents. CloudEvents je specifikace pro popis dat událostí v běžných formátech pro zajištění interoperability napříč službami, platformami a systémy.
Naslouchací procesy událostí služby naslouchají klientským událostem. Event Hubs je aktuálně jediným podporovaným koncovým bodem naslouchacího procesu událostí, jehož primárním protokolem je AMQP (Advanced Message Queueing Protocol). Služba Web PubSub používá vazbu protokolu AMQP CloudEvents k mapování CloudEvents na zprávy AMQP.
Data odesílaná ze služby na server jsou vždy ve formátu CloudEvents binary
.
Rozšíření atributů Web PubSub CloudEvents
Toto rozšíření definuje atributy používané web pubSub pro každou událost, kterou vytvoří.
Následující tabulka obsahuje atributy mapování na standardní část vlastností zprávy AMQP.
Název | Popis | Příklad |
---|---|---|
content-type |
Typ MIME RFC-2046 pro text zprávy | application/json |
message-id |
Jedinečně definuje zprávu ve službě Web PubSub ve formátu {connection-id}/{celé číslo vygenerované službou}. | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1 |
Následující tabulka obsahuje všechny atributy CloudEvents mapování na oddíl vlastností aplikace zprávy AMQP. Každý název atributu má předponu cloudEvents:
.
Název | Popis | Příklad |
---|---|---|
specversion |
Verze specifikace událostí cloudu je vždy 1.0. | 1.0 |
source |
Označuje centrum a ID připojení, ze kterého událost pochází, ve formátu /hubs/{hub}/client/{connectionId}. | /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
id |
Celé číslo vygenerované službou, jedinečné v událostech ze stejného připojení klienta | 0 |
awpsversion |
Verze specifikace Azure Web PubSub událostí cloudu je vždy 1.0. | 1.0 |
hub |
Název centra, ze kterého událost pochází | chat |
eventname |
Název události | Připojen |
type |
Typ události | azure.webpubsub.sys.connect |
connectionid |
ID připojení klienta | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
time |
Čas odeslání události ve formátu "rrrr-MM-ddTHH:mm:ssZ" | 2021-01-01T00:00:00Z |
userid * |
ID uživatele | user1 |
subprotocol * |
Název dílčího souhrnu | json.webpubsub.azure.v1 |
connectionstate * |
Definuje stav připojení. Hodnotu v hlavičce odpovědi obslužných rutin událostí můžete resetovat. Další informace o stavu připojení najdete v tématu Atributy Web PubSub CloudEvents. | anystring |
Znak *, který následuje za názvem atributu, označuje, že atribut je k dispozici pouze v případech, kdy hodnota není null nebo prázdná.
Události
Tato část ukazuje text zprávy AMQP s hodnotami atributů, které závisí na konkrétním typu události klienta. Hodnoty atributů, které nezávisí na typu události klienta, jsou vynechány.
- Systémová
connect
událost: Naslouchací procesy událostí nejsou podporovány. - Systémová
connected
událost - Systémová
disconnected
událost - Uživatelské události
message
pro jednoduché klienty WebSocket - Vlastní událost
{custom_event}
uživatele pro klienty PubSub WebSocket
Systémová connected
událost
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.connected
cloudEvents:eventname
:connected
Text zprávy je vždy prázdný JSON.
{}
Systémová disconnected
událost
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.disconnected
cloudEvents:eventname
:disconnected
Text zprávy obsahuje důvod, proč se klient odpojil.
{"reason":"{Reason}"}
Uživatelské události message
pro jednoduché klienty WebSocket
content-type
:application/octet-stream
pro binární rámec;text/plain
pro textový rámec;cloudEvents:type
:azure.webpubsub.user.message
Text zprávy je to, co klient odesílá.
Vlastní událost {custom_event}
uživatele pro klienty PubSub WebSocket
content-type
:application/octet-stream
pro binární rámec;application/json
pro rámec JSON;text/plain
pro textový rámec;application/x-protobuf
pro rámec Protobuf;cloudEvents:type
:azure.webpubsub.user.<event_name>
Následující případy ukazují, jak odesílat události s různými datovými typy obsahu a přijatými těly zpráv AMQP.
Případ 1: Odeslání události s textovými daty:
{
"type": "event",
"event": "<event_name>",
"dataType": "text",
"data": "text data"
}
Přijatý text zprávy AMQP:
text data
Případ 2: Odeslání události s daty JSON:
{
"type": "event",
"event": "<event_name>",
"dataType": "json",
"data": {
"hello": "world"
}
}
Přijatý text zprávy AMQP:
{
"hello": "world"
}
Případ 3: Odeslání události s binárními daty:
{
"type": "event",
"event": "<event_name>",
"dataType": "binary",
"data": "aGVsbG8gd29ybGQ=" // base64 encoded binary
}
Přijatý text zprávy AMQP:
<binary data>