Bagikan melalui


Ekstensi CloudEvents untuk pendengar peristiwa Azure Web PubSub dengan protokol AMQP

Layanan Azure Web PubSub menjelaskan peristiwa klien sebagai CloudEvents. CloudEvents adalah spesifikasi untuk menjelaskan data peristiwa dalam format umum untuk memberikan interoperabilitas di seluruh layanan, platform, dan sistem.

Pendengar peristiwa layanan mendengarkan peristiwa klien. Azure Event Hubs saat ini adalah satu-satunya titik akhir pendengar peristiwa yang didukung, yang protokol utamanya adalah AMQP (Advanced Message Queueing Protocol). Layanan Web PubSub menggunakan pengikatan protokol CLOUDEvents AMQP untuk memetakan CloudEvents ke pesan AMQP.

Data yang dikirim dari layanan ke server selalu dalam format CloudEvents binary .

Ekstensi atribut Web PubSub CloudEvents

Ekstensi ini mendefinisikan atribut yang digunakan oleh Web PubSub untuk setiap acara yang dihasilkannya.

Tabel berikut berisi pemetaan atribut ke bagian properti standar dari pesan AMQP.

Nama Deskripsi Contoh
content-type Jenis RFC-2046 MIME untuk isi pesan application/json
message-id Secara unik mendefinisikan pesan dalam layanan Web PubSub, dalam format "{connection-id}/{an integer generated by service}" 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1

Tabel berikut berisi semua pemetaan atribut CloudEvents ke bagian properti aplikasi dari pesan AMQP. Setiap nama atribut diawali dengan cloudEvents:.

Nama Deskripsi Contoh
specversion Versi spesifikasi peristiwa cloud, selalu 1.0 1,0
source Menunjukkan hub dan ID koneksi tempat peristiwa berasal, dalam format "/hubs/{hub}/client/{connectionId}" /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aaa2ed9db
id Bilangan bulat yang dihasilkan oleh layanan, unik dalam peristiwa dari koneksi klien yang sama 1
awpsversion Versi spesifikasi Azure Web PubSub peristiwa cloud, selalu 1.0 1,0
hub Nama hub tempat peristiwa berasal Chat
eventname Nama peristiwa Terhubung
type Jenis peristiwa azure.webpubsub.sys.connect
connectionid ID koneksi klien 0bd83792-2a0c-48d3-9fbd-df63aaa2ed9db
time Waktu ketika layanan mengirim peristiwa, dalam format "yyyy-MM-ddTHH:mm:ssZ" 2021-01-01T00:00:00Z
userid* ID pengguna user1
subprotocol* Nama subprotoklasi json.webpubsub.azure.v1
connectionstate* Mendefinisikan status untuk koneksi. Anda dapat mengatur ulang nilai di header respons penanganan aktivitas. Untuk informasi selengkapnya tentang status koneksi, lihat Atribut Web PubSub CloudEvents. anystring

"*" yang mengikuti nama atribut menunjukkan atribut hanya ada ketika nilainya tidak null atau kosong.

Aktivitas

Bagian ini memperlihatkan isi pesan AMQP dengan nilai atribut yang bergantung pada jenis peristiwa klien tertentu. Nilai atribut yang tidak bergantung pada jenis peristiwa klien dihilangkan.

Peristiwa connected sistem

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

Isi pesan selalu kosong JSON.

{}

Peristiwa disconnected sistem

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

Isi pesan berisi alasan klien terputus.

{"reason":"{Reason}"}

Peristiwa message pengguna untuk klien WebSocket sederhana

  • content-type: application/octet-stream untuk bingkai biner; text/plain untuk bingkai teks;
  • cloudEvents:type: azure.webpubsub.user.message

Isi pesan adalah apa yang dikirim klien.

Peristiwa kustom pengguna {custom_event} untuk klien PubSub WebSocket

  • content-type: application/octet-stream untuk bingkai biner; application/json untuk bingkai JSON; text/plain untuk bingkai teks; application/x-protobuf untuk bingkai Protobuf;
  • cloudEvents:type: azure.webpubsub.user.<event_name>

Kasus berikut menunjukkan cara mengirim peristiwa dengan jenis konten data yang berbeda dan badan pesan AMQP yang diterima.

Kasus 1: mengirim peristiwa dengan data teks:

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

Isi pesan AMQP yang diterima:

text data

Kasus 2: mengirim peristiwa dengan data JSON:

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

Isi pesan AMQP yang diterima:

{
    "hello": "world"
}

Kasus 3: mengirim peristiwa dengan data biner:

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

Isi pesan AMQP yang diterima:

<binary data>