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
connect
sistem: Tidak didukung oleh pendengar peristiwa. - Peristiwa sistem
connected
- Peristiwa sistem
disconnected
- Peristiwa
message
pengguna untuk klien WebSocket sederhana - Peristiwa
{custom_event}
kustom pengguna untuk klien WebSocket PubSub
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>