Dela via


CloudEvents-tillägg för Azure Web PubSub-händelselyssnare med AMQP-protokoll

Azure Web PubSub Service beskriver klienthändelser som CloudEvents. CloudEvents är en specifikation för att beskriva händelsedata i vanliga format för att tillhandahålla samverkan mellan tjänster, plattformar och system.

Tjänstens händelselyssnare lyssnar på klienthändelser. Event Hubs är för närvarande den enda händelselyssnareslutpunkten som stöds, vars primära protokoll är AMQP (Advanced Message Queueing Protocol). Web PubSub-tjänsten använder CloudEvents AMQP-protokollbindning för att mappa CloudEvents till AMQP-meddelanden.

Data som skickas från tjänsten till servern är alltid i CloudEvents-format binary .

Web PubSub CloudEvents-attributtillägg

Det här tillägget definierar de attribut som används av Web PubSub för varje händelse som skapas.

Följande tabell innehåller attributmappning till avsnittet standardegenskaper i ett AMQP-meddelande.

Namn Beskrivning Exempel
content-type MIME-typen RFC-2046 för meddelandets brödtext application/json
message-id Definierar ett meddelande unikt i en Web PubSub-tjänst i formatet "{connection-id}/{an integer generated by service}" 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1

Följande tabell innehåller alla CloudEvents-attributmappning till avsnittet programegenskaper i ett AMQP-meddelande. Varje attributnamn är prefix med cloudEvents:.

Namn Beskrivning Exempel
specversion Specifikationsversion för molnhändelser är alltid 1.0 1.0
source Anger hubben och anslutnings-ID:t där händelsen kommer ifrån, i formatet "/hubs/{hub}/client/{connectionId}" /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
id Ett heltal som genereras av tjänsten, unikt i händelserna från samma klientanslutning 1
awpsversion Azure Web PubSub-specifikationsversion för molnhändelser är alltid 1.0 1.0
hub Hubbens namn där händelsen kommer från chatt
eventname Namnet på eventet Ansluten
type Händelsetypen azure.webpubsub.sys.connect
connectionid ID för klientanslutningen 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
time Den tid då tjänsten skickar händelsen i formatet "åååå-MM-ddTHH:mm:ssZ" 2021-01-01T00:00:00Z
userid* Användarens ID user1
subprotocol* Subprotocol-namnet json.webpubsub.azure.v1
connectionstate* Definierar tillståndet för anslutningen. Du kan återställa värdet i svarshuvudet för händelsehanterare. Mer information om anslutningstillstånd finns i Web PubSub CloudEvents-attribut. anystring

"*" som följer attributnamnet anger att attributet endast finns när värdet inte är null eller tomt.

Händelser

Det här avsnittet visar AMQP-meddelandetexten med attributvärden som är beroende av en specifik klienthändelsetyp. Attributvärden som inte är beroende av en klienthändelsetyp utelämnas.

Systemhändelse connected

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

Meddelandetexten är alltid tom JSON.

{}

Systemhändelse disconnected

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

Meddelandetexten innehåller orsaken till att klienten kopplades från.

{"reason":"{Reason}"}

Användarhändelser message för enkla WebSocket-klienter

  • content-type: application/octet-stream för binär ram; text/plain för textram;
  • cloudEvents:type: azure.webpubsub.user.message

Meddelandetexten är vad klienten skickar.

Användaranpassad händelse {custom_event} för PubSub WebSocket-klienter

  • content-type: application/octet-stream för binär ram; application/json för JSON-ram; text/plain för textram; application/x-protobuf för Protobuf-ram;
  • cloudEvents:type: azure.webpubsub.user.<event_name>

Följande fall visar hur du skickar händelser med olika datainnehållstyper och mottagna AMQP-meddelandekroppar.

Fall 1: Skicka händelse med textdata:

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

Mottaget AMQP-meddelandetext:

text data

Fall 2: Skicka händelse med JSON-data:

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

Mottaget AMQP-meddelandetext:

{
    "hello": "world"
}

Fall 3: Skicka händelse med binära data:

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

Mottaget AMQP-meddelandetext:

<binary data>