Extension CloudEvents du détecteur d’événements d’Azure Web PubSub avec le protocole AMQP
Le service Azure Web PubSub décrit les événements clients en tant que spécification CloudEvents. CloudEvents est une spécification qui permet de décrire les données d’événement dans des formats courants pour fournir une interopérabilité entre les services, les plateformes et les systèmes.
Les détecteurs d’événements du service écoutent les événements clients. Event Hubs est le seul point de terminaison de détecteur d’événements pris en charge, dont le protocole principal est AMQP (Advanced Message Queueing Protocol). Le service Web PubSub utilise la liaison de protocole AMQP CloudEvents pour mapper CloudEvents aux messages AMQP.
Les données envoyées du service au serveur sont toujours au format binary
CloudEvents.
Extension d’attribut CloudEvents pour Web PubSub
Cette extension définit les attributs utilisés par Web PubSub pour chaque événement qu’il produit.
Le tableau suivant contient un mappage d’attributs à la section des propriétés standard d’un message AMQP.
Nom | Description | Exemple |
---|---|---|
content-type |
Type MIME RFC-2046 pour le corps du message | application/json |
message-id |
Définit de manière unique un message dans un service Web PubSub, au format « {id-connexion}/{entier généré par le service} » | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1 |
Le tableau suivant contient tous les mappages d’attributs CloudEvents à la section des propriétés d’application d’un message AMQP. Chaque nom d’attribut est précédé de cloudEvents:
.
Nom | Description | Exemple |
---|---|---|
specversion |
La version de la spécification CloudEvents est toujours 1.0 | 1.0 |
source |
Indique le hub et l’ID de connexion d’où provient l’événement, au format « /hubs/{hub}/client/{ID-connexion} » | /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
id |
Entier généré par le service, unique dans les événements de la même connexion cliente | 1 |
awpsversion |
La version de la spécification Azure Web PubSub CloudEvents est toujours 1.0 | 1.0 |
hub |
Nom du hub d’où provient l’événement | chat |
eventname |
Nom de l’événement | connected |
type |
Type d’événement | azure.webpubsub.sys.connect |
connectionid |
ID de la connexion cliente | 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db |
time |
Heure à laquelle le service envoie l’événement, au format « aaaa-MM-jjTHH:mm:ssZ » | 2021-01-01T00:00:00Z |
userid * |
ID de l’utilisateur | user1 |
subprotocol * |
Nom du sous-protocole | json.webpubsub.azure.v1 |
connectionstate * |
Définit l’état de la connexion. Vous pouvez réinitialiser la valeur dans l’en-tête de réponse des gestionnaires d’événements. Pour plus d’informations sur l’état de la connexion, consultez Attributs CloudEvents Web PubSub. | chaîne |
Le symbole « * » qui suit le nom d’attribut indique que l’attribut est présent uniquement quand la valeur n’est pas nulle ou vide.
Événements
Cette section montre le corps du message AMQP avec les valeurs d’attribut qui dépendent d’un type d’événement client spécifique. Les valeurs d’attribut qui ne dépendent pas d’un type d’événement client sont omises.
- Événement
connect
système : non pris en charge par les détecteurs d’événements. - Événement
connected
système - Événement
disconnected
système - Événements utilisateur
message
pour les clients de connexions WebSocket simples - Événement personnalisé utilisateur
{custom_event}
pour les clients de connexions WebSocket PubSub
Événement connected
système
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.connected
cloudEvents:eventname
:connected
Le corps du message est toujours un JSON vide.
{}
Événement disconnected
système
content-type
:application/json
cloudEvents:type
:azure.webpubsub.sys.disconnected
cloudEvents:eventname
:disconnected
Le corps du message contient la raison pour laquelle le client s’est déconnecté.
{"reason":"{Reason}"}
Événements utilisateur message
pour les clients de connexions WebSocket simples
content-type
:application/octet-stream
pour une trame binaire ;text/plain
pour une trame texte.cloudEvents:type
:azure.webpubsub.user.message
Le corps du message correspond à ce que le client envoie.
Événement personnalisé utilisateur {custom_event}
pour les clients WebSocket PubSub
content-type
:application/octet-stream
pour une trame binaire ;application/json
pour une trame JSON ;text/plain
pour une trame de texte ;application/x-protobuf
pour une trame Protobuf ;cloudEvents:type
:azure.webpubsub.user.<event_name>
Les cas suivants montrent comment envoyer des événements avec différents types de contenu de données et les corps de message AMQP reçus.
Cas 1 : envoyer un événement avec des données texte :
{
"type": "event",
"event": "<event_name>",
"dataType": "text",
"data": "text data"
}
Corps de message AMQP reçu :
text data
Cas 2 : envoyer un événement avec des données JSON :
{
"type": "event",
"event": "<event_name>",
"dataType": "json",
"data": {
"hello": "world"
}
}
Corps de message AMQP reçu :
{
"hello": "world"
}
Cas 3 : envoyer un événement avec des données binaires :
{
"type": "event",
"event": "<event_name>",
"dataType": "binary",
"data": "aGVsbG8gd29ybGQ=" // base64 encoded binary
}
Corps de message AMQP reçu :
<binary data>