Compartir a través de


Extensión CloudEvents para el agente de escucha de eventos de Azure Web PubSub con el protocolo AMQP

El servicio Azure Web PubSub describe los eventos de cliente como CloudEvents. CloudEvents es una especificación para describir los datos de eventos en formatos comunes para proporcionar interoperabilidad entre servicios, plataformas y sistemas.

Los agentes de escucha de eventos del servicio escuchan eventos de cliente. Event Hubs es actualmente el único punto de conexión de escucha de eventos admitido, cuyo protocolo principal es AMQP (Advanced Message Queueing Protocol). El servicio Web PubSub usa el enlace de protocolo AMQP de CloudEvents para asignar CloudEvents a mensajes AMQP.

Los datos que se envían desde el servicio al servidor siempre están en formato binary de CloudEvents.

Extensión de atributo CloudEvents de Web PubSub

Esta extensión define los atributos que usa Web PubSub para cada evento que genera.

La tabla siguiente contiene atributos que se asignan a la sección de propiedades estándar de un mensaje AMQP.

Nombre Descripción Ejemplo
content-type Tipo MIME RFC-2046 para el cuerpo del mensaje application/json
message-id Define de forma única un mensaje en un servicio Web PubSub, con el formato "{connection-id}/{un entero generado por el servicio}" 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1

La tabla siguiente contiene todos los atributos de CloudEvents que se asignan a la sección de propiedades de la aplicación de un mensaje AMQP. Cada nombre de atributo tiene el prefijo cloudEvents:.

Nombre Descripción Ejemplo
specversion La versión de especificación de eventos en la nube es siempre 1.0 1.0
source Indica el centro de conectividad y el identificador de conexión del que procede el evento, con el formato "/hubs/{hub}/client/{connectionId}" /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
id Entero generado por el servicio, único en los eventos de la misma conexión de cliente 1
awpsversion La versión de especificación de Azure Web PubSub de eventos en la nube, siempre es 1.0 1.0
hub Nombre del centro de conectividad del que procede el evento chat
eventname El nombre del evento connected
type El tipo de evento azure.webpubsub.sys.connect
connectionid Identificador de la conexión de cliente 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
time Hora a la que el servicio envía el evento, con el formato "aaaa-MM-ddTHH:mm:ssZ" 2021-01-01T00:00:00Z
userid* El identificador del usuario user1
subprotocol* Nombre del subprotocolo json.webpubsub.azure.v1
connectionstate* Define el estado de la conexión. Puede restablecer el valor en el encabezado de respuesta de los controladores de eventos. Para más información sobre el estado de conexión, consulte Atributos de Web PubSub CloudEvents. anystring

El valor "*" que sigue al nombre del atributo indica que el atributo solo está presente cuando el valor no es null ni está vacío.

Eventos

En esta sección se muestra el cuerpo del mensaje AMQP con los valores de atributo que dependen de un tipo de evento de cliente específico. Los valores de atributo que no dependen de un tipo de evento de cliente se omiten.

Evento connected del sistema

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

El cuerpo del mensaje siempre es un JSON vacío.

{}

Evento disconnected del sistema

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

El cuerpo del mensaje contiene el motivo por el que se desconectó el cliente.

{"reason":"{Reason}"}

Eventos de usuario message para los clientes sencillos de WebSocket

  • content-type: application/octet-stream para marco binario; text/plain para marco de texto;
  • cloudEvents:type: azure.webpubsub.user.message

El cuerpo del mensaje es lo que envía el cliente.

Evento personalizado de usuario {custom_event} para clientes de PubSub WebSocket

  • content-type: application/octet-stream para marco binario; application/json para marco JSON; text/plain para marco de texto; application/x-protobuf para marco Protobuf;
  • cloudEvents:type: azure.webpubsub.user.<event_name>

En los casos siguientes se muestra cómo enviar eventos con diferentes tipos de contenido de datos y los cuerpos de mensaje AMQP recibidos.

Caso 1: envío de eventos con datos de texto:

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

Cuerpo del mensaje AMQP recibido:

text data

Caso 2: envío de eventos con datos JSON:

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

Cuerpo del mensaje AMQP recibido:

{
    "hello": "world"
}

Caso 3: envío de eventos con datos binarios:

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

Cuerpo del mensaje AMQP recibido:

<binary data>