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
connect
del sistema: no compatible con agentes de escucha de eventos. - Evento
connected
del sistema - Evento
disconnected
del sistema - Eventos de usuario
message
para los clientes sencillos de WebSocket - Evento personalizado de usuario
{custom_event}
para clientes de WebSocket de PubSub
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>