Condividi tramite


Libreria client del servizio Web PubSub di Azure per Python

Il servizio Web PubSub di Azure è un servizio gestito da Azure che consente agli sviluppatori di creare facilmente applicazioni Web con funzionalità in tempo reale e modello di pubblicazione-sottoscrizione. Qualsiasi scenario che richiede la messaggistica di pubblicazione-sottoscrizione in tempo reale tra server e client o tra i client può usare il servizio Web PubSub di Azure. Le funzionalità tradizionali in tempo reale che spesso richiedono il polling dal server o l'invio di richieste HTTP possono usare anche il servizio PubSub Web di Azure.

È possibile usare questa libreria sul lato server dell'app per gestire le connessioni client WebSocket, come illustrato nel diagramma seguente:

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

Usare questa libreria per:

  • Inviare messaggi a hub e gruppi.
  • Inviare messaggi a utenti e connessioni specifici.
  • Organizzare utenti e connessioni in gruppi.
  • Chiudere le connessioni.
  • Concedere, revocare e controllare le autorizzazioni per una connessione esistente.

Prerequisiti

  • Python 3.6 o versione successiva è necessario per usare questo pacchetto.
  • Per usare questo pacchetto è necessaria una sottoscrizione di Azure e un'istanza del servizio WebPubSub di Azure.
  • Istanza del servizio Web PubSub di Azure esistente.

Importante

Il supporto dei pacchetti Python di Azure SDK per Python 2.7 termina il 01 gennaio 2022. Per altre informazioni, vedere Supporto dei pacchetti Python di Azure SDK.

Installare il pacchetto

Usare questo comando per installare il pacchetto:

python -m pip install azure-messaging-webpubsubservice

Creare ed autenticare un WebPubSubServiceClient

È possibile autenticare WebPubSubServiceClient usando un stringa di connessione:

>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient

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

In alternativa, usare l'endpoint del servizio e la chiave di accesso:

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

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

In alternativa, usare Microsoft Entra ID:

  1. pip install azure-identity.

  2. Abilitare l'autorizzazione di Microsoft Entra nella risorsa Webpubsub.

  3. Aggiornare il codice per usare DefaultAzureCredential.

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

Esempi

Trasmettere messaggi in formato 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'
    })

Il client WebSocket riceve testo serializzato JSON: {"from": "user1", "data": "Hello world"}.

Trasmettere messaggi in formato testo normale

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

Il client WebSocket riceve testo: Hello world.

Trasmettere messaggi in formato binario

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

Il client WebSocket riceve testo binario: b'Hello world'.

Registrazione

Questo SDK usa la libreria di registrazione standard python. È possibile configurare la registrazione per stampare le informazioni di debug in o in stdout qualsiasi punto desiderato.

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)

Analogamente, logging_enable può abilitare la registrazione dettagliata per una singola chiamata, anche quando non è abilitata per :WebPubSubServiceClient

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

I dettagli della richiesta e della risposta HTTP vengono stampati stdout con questa configurazione di registrazione.

Passaggi successivi

Per altri esempi, vedere Libreria client del servizio Web PubSub di Azure per esempi python.

Contributo

This project welcomes contributions and suggestions. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per altre informazioni, vedere Contratto di licenza collaboratore.

Quando si invia una richiesta pull, un bot CLA determina automaticamente se è necessario fornire un contratto di licenza e decorare la richiesta pull in modo appropriato, ad esempio "etichetta", "commento". Seguire le istruzioni fornite dal bot. È sufficiente eseguire questa azione una sola volta in tutti i repository usando il contratto di licenza.

Questo progetto ha adottato il codice di comportamento open source Microsoft. Per altre informazioni, vedere Domande frequenti sul codice di comportamento o contattare il team di comportamento Open Source con domande o commenti.