Udostępnij za pośrednictwem


Biblioteka klienta usługi Azure Web PubSub dla języka Python

Azure Web PubSub Service to usługa zarządzana przez platformę Azure, która ułatwia deweloperom łatwe tworzenie aplikacji internetowych przy użyciu funkcji w czasie rzeczywistym i wzorca publikowania-subskrybowania. Każdy scenariusz, który wymaga komunikatów publikowania i subskrybowania w czasie rzeczywistym między serwerem a klientami lub między klientami, może korzystać z usługi Azure Web PubSub. Tradycyjne funkcje w czasie rzeczywistym, które często wymagają sondowania z serwera lub przesyłania żądań HTTP, mogą również używać usługi Azure Web PubSub.

Tej biblioteki można używać po stronie serwera aplikacji do zarządzania połączeniami klienta protokołu WebSocket, jak pokazano na poniższym diagramie:

The overflow diagram shows the overflow of using the service client library.

Użyj tej biblioteki, aby:

  • Wysyłanie komunikatów do centrów i grup.
  • Wysyłanie komunikatów do konkretnych użytkowników i połączeń.
  • Organizowanie użytkowników i połączeń w grupy.
  • Zamknij połączenia.
  • Udzielanie, odwoływanie i sprawdzanie uprawnień dla istniejącego połączenia.

Wymagania wstępne

  • Do korzystania z tego pakietu jest wymagany język Python w wersji 3.6 lub nowszej.
  • Do korzystania z tego pakietu potrzebna jest subskrypcja platformy Azure i wystąpienie usługi Azure WebPubSub.
  • Istniejące wystąpienie usługi Azure Web PubSub.

Ważne

Obsługa pakietów języka Python zestawu Azure SDK dla języka Python w wersji 2.7 kończy się 01 stycznia 2022 r. Aby uzyskać więcej informacji, zobacz Obsługa pakietów języka Python zestawu Azure SDK.

Instalowanie pakietu

Użyj tego polecenia, aby zainstalować pakiet:

python -m pip install azure-messaging-webpubsubservice

Tworzenie i uwierzytelnianie elementu WebPubSubServiceClient

Możesz uwierzytelnić się WebPubSubServiceClient przy użyciu parametry połączenia:

>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient

>>> service = WebPubSubServiceClient.from_connection_string(connection_string='<connection_string>', hub='hub')

Możesz też użyć punktu końcowego usługi i klucza dostępu:

>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> from azure.core.credentials import AzureKeyCredential

>>> service = WebPubSubServiceClient(endpoint='<endpoint>', hub='hub', credential=AzureKeyCredential("<access_key>"))

Możesz też użyć identyfikatora Entra firmy Microsoft:

  1. pip install azure-identity.

  2. Włącz autoryzację microsoft Entra w zasobie Webpubsub.

  3. Zaktualizuj kod, aby używał wartości DefaultAzureCredential.

    >>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
    >>> from azure.identity import DefaultAzureCredential
    >>> service = WebPubSubServiceClient(endpoint='<endpoint>', hub='hub', credential=DefaultAzureCredential())
    

Przykłady

Emisja komunikatów w formacie 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'
    })

Klient protokołu WebSocket odbiera tekst serializowany w formacie JSON: {"from": "user1", "data": "Hello world"}.

Emisja komunikatów w formacie zwykłego tekstu

>>> 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')

Klient protokołu WebSocket otrzymuje tekst: Hello world.

Emisja komunikatów w formacie binarnym

>>> 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')

Klient protokołu WebSocket otrzymuje tekst binarny: b'Hello world'.

Rejestrowanie

Ten zestaw SDK używa standardowej biblioteki rejestrowania języka Python. Rejestrowanie można skonfigurować w celu drukowania informacji debugowania w stdout dowolnym miejscu lub w dowolnym miejscu.

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)

logging_enable Podobnie można włączyć szczegółowe rejestrowanie dla pojedynczego wywołania, nawet jeśli nie jest włączone dla elementu WebPubSubServiceClient:

result = service.send_to_all(..., logging_enable=True)

Szczegóły żądania HTTP i odpowiedzi są drukowane przy stdout użyciu tej konfiguracji rejestrowania.

Następne kroki

Aby uzyskać więcej przykładów, zobacz Biblioteka klienta usługi Azure Web PubSub dla przykładów języka Python.

Przyczyniając się

Ten projekt z zadowoleniem przyjmuje wkład i sugestie. Większość kontrybucja wymaga zgody na umowę licencyjną współautora (CLA), deklarując, że masz prawo, a w rzeczywistości przyznaj nam prawa do korzystania z twojego wkładu. Aby uzyskać więcej informacji, zobacz Umowa licencyjna współautora.

Po przesłaniu żądania ściągnięcia bot CLA automatycznie określa, czy należy podać cla i odpowiednio ozdobić żądanie ściągnięcia, na przykład "etykieta", "komentarz". Postępuj zgodnie z instrukcjami podanymi przez bota. Tę akcję należy wykonać tylko raz we wszystkich repozytoriach przy użyciu naszego cla.

W tym projekcie jest używany Kodeks postępowania firmy Microsoft dla oprogramowania typu open source. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące kodeksu postępowania lub skontaktuj się z zespołem ds. postępowania open source z pytaniami lub komentarzami.