Udostępnij za pośrednictwem


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