Biblioteca de clientes do serviço Azure Web PubSub para Python
O serviço Azure Web PubSub é um serviço gerenciado do Azure que ajuda os desenvolvedores a criar aplicativos Web facilmente com recursos em tempo real e padrão de publicação/assinatura. Qualquer cenário que exija mensagens de publicação/assinatura em tempo real entre o servidor e os clientes ou entre clientes pode usar o serviço Azure Web PubSub. Os recursos tradicionais em tempo real que geralmente exigem a sondagem do servidor ou o envio de solicitações HTTP também podem usar o serviço Azure Web PubSub.
Você pode usar essa biblioteca no lado do servidor de aplicativos para gerenciar as conexões de cliente WebSocket, conforme mostrado no diagrama a seguir:
Use essa biblioteca para:
- Enviar mensagens para hubs e grupos.
- Enviar mensagens para usuários e conexões específicos.
- Organizar usuários e conexões em grupos.
- Fechar conexões.
- Conceder, revogar e verificar permissões para uma conexão existente.
Pré-requisitos
- É necessário Python 3.6 ou posterior para usar esse pacote.
- Você precisará de uma assinatura do Azure e de uma instância de serviço do Azure Web PubSub para usar esse pacote.
- Uma instância de serviço existente do Azure Web PubSub.
Importante
O suporte a pacotes do Python do SDK do Azure para o Python 2.7 vai terminar em 1º de janeiro de 2022. Para obter mais informações, confira Suporte a pacotes Python para SDK do Azure.
Instalar o pacote
Use este comando para instalar o pacote:
python -m pip install azure-messaging-webpubsubservice
Criar e autenticar um WebPubSubServiceClient
Você pode autenticar o WebPubSubServiceClient
usando a cadeia de conexão:
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> service = WebPubSubServiceClient.from_connection_string(connection_string='<connection_string>', hub='hub')
Ou use o ponto de extremidade de serviço e a chave de acesso:
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> from azure.core.credentials import AzureKeyCredential
>>> service = WebPubSubServiceClient(endpoint='<endpoint>', hub='hub', credential=AzureKeyCredential("<access_key>"))
Ou use o Microsoft Entra ID:
pip install
azure-identity
.Habilite a autorização do Microsoft Entra em seu recurso Webpubsub.
Atualize o código para usar DefaultAzureCredential.
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient >>> from azure.identity import DefaultAzureCredential >>> service = WebPubSubServiceClient(endpoint='<endpoint>', hub='hub', credential=DefaultAzureCredential())
Exemplos
Transmitir mensagens no 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'
})
O cliente WebSocket recebe um texto serializado JSON: {"from": "user1", "data": "Hello world"}
.
Transmitir mensagens em formato de texto sem formatação
>>> 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')
O cliente WebSocket recebe um texto: Hello world
.
Transmitir mensagens em formato binário
>>> 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')
O cliente WebSocket recebe um texto binário: b'Hello world'
.
Registrando em log
Esse SDK usa a biblioteca de log padrão do Python.
Você pode configurar o registro em log para imprimir informações de depuração em stdout
ou em qualquer lugar que deseje.
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)
Da mesma forma, logging_enable
pode habilitar o log detalhado para uma chamada individual, mesmo quando não estiver habilitado para o WebPubSubServiceClient
:
result = service.send_to_all(..., logging_enable=True)
Os detalhes de solicitação e resposta HTTP são impressos em stdout
com essa configuração de registro em log.
Próximas etapas
Para obter mais exemplos, consulte a biblioteca de clientes de serviço do Azure Web PubSub para Exemplos em Python.
Participante
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder e de fato concede, os direitos de usar sua contribuição. Para obter mais informações, consulte o Contrato de Licença de Colaborador.
Quando você envia uma solicitação de pull, um bot do CLA determina automaticamente se você precisa fornecer um CLA e preencher a PR corretamente, por exemplo, “rótulo”, “comentário”. Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para saber mais, confira as Perguntas frequentes sobre o Código de Conduta ou contate aEquipe de Conduta de Código Aberto caso tenha outras dúvidas ou comentários.