Rozszerzenie CloudEvents dla odbiornika zdarzeń usługi Azure Web PubSub z protokołem AMQP
Usługa Azure Web PubSub service opisuje zdarzenia klienta jako CloudEvents. CloudEvents to specyfikacja opisywania danych zdarzeń w typowych formatach zapewniających współdziałanie między usługami, platformami i systemami.
Odbiorniki zdarzeń usługi nasłuchują zdarzeń klienta. Usługa Event Hubs jest obecnie jedynym obsługiwanym punktem końcowym odbiornika zdarzeń, którego podstawowym protokołem jest PROTOKÓŁ AMQP (Advanced Message Queueing Protocol). Usługa Web PubSub używa powiązania protokołu AMQP CloudEvents w celu mapowania elementów CloudEvents na komunikaty AMQP.
Dane wysyłane z usługi do serwera są zawsze w formacie CloudEvents binary
.
Rozszerzenie atrybutu Web PubSub CloudEvents
To rozszerzenie definiuje atrybuty używane przez usługę Web PubSub dla każdego generowanego zdarzenia.
Poniższa tabela zawiera mapowanie atrybutów na sekcję właściwości standardowych komunikatu protokołu AMQP.
Nazwa/nazwisko | opis | Przykład |
---|---|---|
content-type |
Typ MIME RFC-2046 dla treści wiadomości | application/json |
message-id |
Unikatowo definiuje komunikat w usłudze Web PubSub w formacie "{connection-id}/{liczba całkowita wygenerowana przez usługę}" | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1 |
Poniższa tabela zawiera wszystkie atrybuty CloudEvents mapowanie do sekcji właściwości aplikacji komunikatu protokołu AMQP. Każda nazwa atrybutu ma prefiks .cloudEvents:
Nazwa/nazwisko | opis | Przykład |
---|---|---|
specversion |
Wersja specyfikacji zdarzeń w chmurze jest zawsze 1.0 | 1.0 |
source |
Wskazuje centrum i identyfikator połączenia, z którego pochodzi zdarzenie, w formacie "/hubs/{hub}/client/{connectionId}" | /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
id |
Liczba całkowita wygenerowana przez usługę, unikatowa w zdarzeniach z tego samego połączenia klienta | 1 |
awpsversion |
Zdarzenia w chmurze wersja specyfikacji Azure Web PubSub jest zawsze 1.0 | 1.0 |
hub |
Nazwa centrum, z którego pochodzi zdarzenie | czat |
eventname |
Nazwa zdarzenia | Podłączony |
type |
Typ zdarzenia | azure.webpubsub.sys.connect |
connectionid |
Identyfikator połączenia klienta | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
time |
Czas wysyłania zdarzenia przez usługę w formacie "rrrr-MM-ddTHH:mm:ssZ" | 2021-01-01T00:00:00Z |
userid * |
Identyfikator użytkownika | użytkownik1 |
subprotocol * |
Nazwa podprotokolu | json.webpubsub.azure.v1 |
connectionstate * |
Definiuje stan połączenia. Wartość można zresetować w nagłówku odpowiedzi programów obsługi zdarzeń. Aby uzyskać więcej informacji na temat stanu połączenia, zobacz Web PubSub CloudEvents attributes (Atrybuty Web PubSub CloudEvents). | anystring |
Wartość "*" po nazwie atrybutu wskazuje, że atrybut jest obecny tylko wtedy, gdy wartość nie ma wartości null ani nie jest pusta.
Wydarzenia
W tej sekcji przedstawiono treść komunikatu protokołu AMQP z wartościami atrybutów, które zależą od określonego typu zdarzenia klienta. Pominięto wartości atrybutów, które nie zależą od typu zdarzenia klienta.
- Zdarzenie systemowe
connect
: nieobsługiwane przez odbiorniki zdarzeń. - Zdarzenie systemowe
connected
- Zdarzenie systemowe
disconnected
- Zdarzenia
message
użytkownika dla prostych klientów protokołu WebSocket - Zdarzenie
{custom_event}
niestandardowe użytkownika dla klientów Protokołu WebSocket usługi PubSub
Zdarzenie systemowe connected
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.connected
cloudEvents:eventname
:connected
Treść komunikatu jest zawsze pusta w formacie JSON.
{}
Zdarzenie systemowe disconnected
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.disconnected
cloudEvents:eventname
:disconnected
Treść komunikatu zawiera przyczynę rozłączenia klienta.
{"reason":"{Reason}"}
Zdarzenia message
użytkownika dla prostych klientów protokołu WebSocket
content-type
:application/octet-stream
dla ramki binarnej;text/plain
dla ramki tekstowej;cloudEvents:type
:azure.webpubsub.user.message
Treść komunikatu jest wysyłana przez klienta.
Zdarzenie {custom_event}
niestandardowe użytkownika dla klientów Protokołu WebSocket usługi PubSub
content-type
:application/octet-stream
dla ramki binarnej;application/json
dla ramki JSON;text/plain
dla ramki tekstowej;application/x-protobuf
dla ramki Protobuf;cloudEvents:type
:azure.webpubsub.user.<event_name>
W poniższych przypadkach pokazano, jak wysyłać zdarzenia z różnymi typami zawartości danych i odebranymi treściami komunikatów protokołu AMQP.
Przypadek 1: wysyłanie zdarzenia z danymi tekstowymi:
{
"type": "event",
"event": "<event_name>",
"dataType": "text",
"data": "text data"
}
Odebrano treść komunikatu PROTOKOŁU AMQP:
text data
Przypadek 2: wysyłanie zdarzenia z danymi JSON:
{
"type": "event",
"event": "<event_name>",
"dataType": "json",
"data": {
"hello": "world"
}
}
Odebrano treść komunikatu PROTOKOŁU AMQP:
{
"hello": "world"
}
Przypadek 3: wysyłanie zdarzenia z danymi binarnymi:
{
"type": "event",
"event": "<event_name>",
"dataType": "binary",
"data": "aGVsbG8gd29ybGQ=" // base64 encoded binary
}
Odebrano treść komunikatu PROTOKOŁU AMQP:
<binary data>