Поделиться через


Расширение CloudEvents для прослушивателя событий Azure Web PubSub с протоколом AMQP

Служба Azure Web PubSub описывает события клиента как CloudEvents. CloudEvents — это спецификация описания данных событий в общих форматах для обеспечения взаимодействия между службами, платформами и системами.

Прослушиватели событий службы прослушивают события клиента. Центры событий в настоящее время являются единственной поддерживаемой конечной точкой прослушивателя событий, основной протокол которой — AMQP (расширенный протокол очереди сообщений). Служба Web PubSub использует привязку протокола AMQP CloudEvents для сопоставления CloudEvents с сообщениями AMQP.

Данные, отправляемые из службы на сервер, всегда в формате CloudEvents binary .

Расширение атрибутов CloudEvents для Web PubSub

Это расширение определяет атрибуты, используемые Web PubSub для каждого созданного события.

В следующей таблице содержатся атрибуты, сопоставленные с разделом стандартных свойств сообщения AMQP.

Имя Описание: Пример
content-type Тип MIME RFC-2046 для текста сообщения application/json
message-id Уникально определяет сообщение в службе Web PubSub в формате "{connection-id}/{целое число, созданное службой}" 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1

В следующей таблице содержатся все атрибуты CloudEvents, сопоставленные с разделом свойств приложения сообщения AMQP. Каждое имя атрибута имеет префикс cloudEvents:.

Имя Описание: Пример
specversion Версия спецификации облачных событий всегда 1.0 1.0
source Указывает концентратор и идентификатор подключения, из которого происходит событие, в формате "/hubs/{hub}/client/{connectionId}" /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
id Целое число, созданное службой, уникальное в событиях из того же подключения клиента. 1
awpsversion Версия спецификации Azure Web PubSub для облачных событий всегда — 1.0 1.0
hub Имя концентратора, из которого происходит событие чат
eventname Имя события подключено
type Тип события azure.webpubsub.sys.connect
connectionid Идентификатор подключения клиента 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
time Время отправки события службой в формате "гггг-ММ-ддTHH:мм:ssZ" 2021-01-01T00:00:00Z
userid* Идентификатор пользователя user1
subprotocol* Имя подпротокола json.webpubsub.azure.v1
connectionstate* Определяет состояние подключения. Можно сбросить значение в заголовке ответа обработчиков событий. Дополнительные сведения о состоянии подключения см. в атрибутах Web PubSub CloudEvents. anystring

Значение "*" после имени атрибута указывает, что атрибут присутствует только в том случае, если значение не равно null или пусто.

События

В этом разделе показан текст сообщения AMQP со значениями атрибутов, зависящими от определенного типа события клиента. Значения атрибутов, которые не зависят от типа события клиента, опущены.

Системное событие connected

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

Текст сообщения всегда пуст.

{}

Системное событие disconnected

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

Текст сообщения содержит причину отключения клиента.

{"reason":"{Reason}"}

События message пользователей для простых клиентов WebSocket

  • content-type: application/octet-stream для двоичного фрейма; text/plain для текстового фрейма;
  • cloudEvents:type: azure.webpubsub.user.message

Текст сообщения — это то, что отправляет клиент.

Настраиваемое пользовательское событие {custom_event} для клиентов PubSub WebSocket

  • content-type: application/octet-stream для двоичного кадра; application/json для кадра JSON; для текстового кадра; text/plain application/x-protobuf для кадра Protobuf;
  • cloudEvents:type: azure.webpubsub.user.<event_name>

В следующих случаях показано, как отправлять события с различными типами контента данных и полученными телами сообщений AMQP.

Сценарий 1. Отправка события с текстовыми данными:

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

Получен текст сообщения AMQP:

text data

Сценарий 2. Отправка события с данными JSON:

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

Получен текст сообщения AMQP:

{
    "hello": "world"
}

Сценарий 3. Отправка события с двоичными данными:

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

Получен текст сообщения AMQP:

<binary data>