Partage via


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