Bagikan melalui


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:

Overflow

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

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:

  1. pemasangan pipazure-identity

  2. Ikuti dokumen untuk mengaktifkan autentikasi AAD pada sumber daya Webpubsub Anda

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