Pustaka klien layanan Azure Web PubSub untuk Python - versi 1.0.1
Layanan Azure Web PubSub adalah layanan yang dikelola Azure dan bertujuan memudahkan pengembang membuat aplikasi web dengan fitur real-time dan pola terbitkan-berlangganan. Skenario apa pun yang memerlukan olahpesan terbitkan-berlangganan real-time antara server dan klien atau di antara klien dapat menggunakan layanan Azure Web PubSub. Fitur real-time tradisional yang sering memerlukan polling dari server atau pengiriman permintaan HTTP juga dapat menggunakan layanan Azure Web PubSub.
Anda dapat menggunakan pustaka ini di sisi server aplikasi Anda untuk mengelola koneksi klien WebSocket, seperti yang ditunjukkan pada diagram di bawah ini:
Gunakan pustaka ini untuk:
- Mengirim pesan ke hub dan grup.
- Mengirim pesan ke pengguna dan koneksi tertentu.
- Mengatur pengguna dan sambungan ke dalam grup.
- Tutup koneksi
- Memberikan,mencabut, dan memeriksa izin untuk koneksi yang sudah ada
Kode sumber | Paket (Pypi) | Dokumentasi referensi API | Dokumentasi produk
Pengelakan
Dukungan paket Azure SDK Python untuk Python 2.7 telah berakhir 01 Januari 2022. Untuk informasi lebih lanjut dan pertanyaan, silakan merujuk ke https://github.com/Azure/azure-sdk-for-python/issues/20691
Memulai
Prasyarat
- Python 3.6 atau yang lebih baru diperlukan untuk menggunakan paket ini.
- Anda memerlukan Langganan Azure, dan Instans layanan Azure WebPubSub untuk menggunakan paket ini.
- Instans layanan Azure Web PubSub yang sudah ada.
1. Pasang paket
python -m pip install azure-messaging-webpubsubservice
2. Membuat dan mengautentikasi WebPubSubServiceClient
Anda dapat mengautentikasi WebPubSubServiceClient
menggunakan string koneksi:
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> service = WebPubSubServiceClient.from_connection_string(connection_string='<connection_string>', hub='hub')
Atau menggunakan titik akhir layanan dan kunci akses:
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> from azure.core.credentials import AzureKeyCredential
>>> service = WebPubSubServiceClient(endpoint='<endpoint>', hub='hub', credential=AzureKeyCredential("<access_key>"))
Atau menggunakan Azure Active Directory:
Ikuti dokumen untuk mengaktifkan autentikasi AAD pada sumber daya Webpubsub Anda
Memperbarui kode untuk menggunakan DefaultAzureCredential
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient >>> from azure.identity import DefaultAzureCredential >>> service = WebPubSubServiceClient(endpoint='<endpoint>', hub='hub', credential=DefaultAzureCredential())
Konsep utama
Koneksi
Koneksi, juga dikenal sebagai klien atau koneksi klien, mewakili koneksi WebSocket individu yang terhubung ke layanan Web PubSub. Jika berhasil terhubung, ID koneksi unik ditetapkan ke koneksi ini oleh layanan Web PubSub.
Hub
Hub adalah konsep logis untuk serangkaian koneksi klien. Biasanya, Anda menggunakan satu hub untuk satu tujuan, misalnya, hub obrolan, atau hub pemberitahuan. Ketika koneksi klien dibuat, koneksi tersebut terhubung ke hub, dan selama masa pakainya, menjadi milik hub tersebut. Aplikasi yang berbeda dapat berbagi satu layanan Azure Web PubSub dengan menggunakan nama hub yang berbeda.
Grup
Grup adalah subset koneksi ke hub. Anda dapat menambahkan koneksi klien ke grup atau menghapus koneksi klien dari grup kapan saja Anda inginkan. Misalnya, saat klien bergabung dengan ruang obrolan atau saat klien keluar dari ruang obrolan, ruang obrolan semacam itu bisa menjadi grup. Klien dapat bergabung dengan beberapa grup, dan grup dapat berisi beberapa klien.
Pengguna
Koneksi ke Web PubSub dapat menjadi milik satu pengguna. Pengguna mungkin memiliki beberapa koneksi, misalnya saat satu pengguna terhubung di beberapa perangkat atau beberapa tab browser.
Pesan
Saat terhubung, klien dapat mengirim pesan ke aplikasi upstream atau menerima pesan dari aplikasi upstream melalui koneksi WebSocket.
Contoh
Pesan siaran dalam format JSON
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> service = WebPubSubServiceClient.from_connection_string('<connection_string>', hub='hub1')
>>> service.send_to_all(message = {
'from': 'user1',
'data': 'Hello world'
})
Klien WebSocket akan menerima teks serial JSON: {"from": "user1", "data": "Hello world"}
.
Pesan siaran dalam format teks biasa
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> service = WebPubSubServiceClient.from_connection_string('<connection_string>', hub='hub1')
>>> service.send_to_all(message = 'Hello world', content_type='text/plain')
Klien WebSocket akan menerima teks: Hello world
.
Pesan siaran dalam format biner
>>> import io
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> service = WebPubSubServiceClient.from_connection_string('<connection_string>', hub='hub')
>>> service.send_to_all(message=io.StringIO('Hello World'), content_type='application/octet-stream')
Klien WebSocket akan menerima teks biner: b'Hello world'
.
Pemecahan Masalah
Pencatatan
SDK ini menggunakan pustaka pengelogan standar Python. Anda dapat mengonfigurasi informasi debugging cetak ke stdout atau di mana pun yang Anda inginkan.
import sys
import logging
from azure.identity import DefaultAzureCredential
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
endpoint = "<endpoint>"
credential = DefaultAzureCredential()
# This WebPubSubServiceClient will log detailed information about its HTTP sessions, at DEBUG level
service = WebPubSubServiceClient(endpoint=endpoint, hub='hub', credential=credential, logging_enable=True)
Demikian pula, logging_enable
dapat mengaktifkan pembuatan log terperinci untuk satu panggilan, bahkan ketika tidak diaktifkan untuk WebPubSubServiceClient:
result = service.send_to_all(..., logging_enable=True)
Permintaan Http dan detail respons dicetak untuk stdout dengan konfigurasi pengelogan ini.
Langkah berikutnya
Periksa lebih banyak sampel di sini.
Berkontribusi
Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.microsoft.com.
Ketika Anda mengirimkan permintaan tarik, CLA-bot akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repos menggunakan CLA kami.
Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Kode Etik atau kontak dengan pertanyaan atau komentar opencode@microsoft.com tambahan.
Azure SDK for Python