次の方法で共有


Python 用 Azure Web PubSub サービス クライアント ライブラリ

Azure Web PubSub Service は、開発者がリアルタイム機能と発行/サブスクライブ パターンを使用して Web アプリケーションを簡単に構築するのに役立つ Azure マネージド サービスです。 サーバーとクライアント間、またはクライアント間でリアルタイムの発行/サブスクライブ メッセージングを必要とするシナリオでは、Azure Web PubSub サービスを使用できます。 サーバーからのポーリングや HTTP 要求の送信が必要な従来のリアルタイム機能でも、Azure Web PubSub サービスを使用できます。

次の図に示すように、アプリ サーバー側でこのライブラリを使用して WebSocket クライアント接続を管理できます。

オーバーフロー図は、サービス クライアント ライブラリの使用のオーバーフローを示しています。

このライブラリを使用して、次の操作を行います。

  • ハブとグループにメッセージを送信します。
  • 特定のユーザーまたはつながりにメッセージを送信します。
  • ユーザーと接続をグループにまとめる。
  • 接続を閉じます。
  • 既存の接続のアクセス許可を付与、取り消し、確認します。

[前提条件]

Important

Python 2.7 に対する Azure SDK Python パッケージのサポートは、2022 年 1 月 1 日に終了します。 詳細については、 Azure SDK Python パッケージのサポートに関するページを参照してください。

パッケージをインストールする

パッケージをインストールするには、次のコマンドを使用します。

python -m pip install azure-messaging-webpubsubservice

WebPubSubServiceClient を作成して認証する

WebPubSubServiceClientを使用してを認証できます。

>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient

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

または、サービス エンドポイントとアクセス キーを使用します。

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

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

または 、Microsoft Entra ID を使用します。

  1. pip install azure-identity.

  2. Webpubsub リソースで Microsoft Entra 承認を有効にします

  3. DefaultAzureCredential を使用するようにコードを更新します。

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

例示

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

WebSocket クライアントは、JSON でシリアル化されたテキスト ( {"from": "user1", "data": "Hello world"}) を受け取ります。

プレーンテキスト形式でメッセージをブロードキャストする

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

WebSocket クライアントはテキスト ( Hello world) を受け取ります。

バイナリ形式でメッセージをブロードキャストする

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

WebSocket クライアントはバイナリ テキスト ( b'Hello world') を受け取ります。

ログ記録

この SDK では、Python 標準ログ ライブラリを使用します。 デバッグ情報を stdout または任意の場所に出力するようにログ記録を構成できます。

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 では、 WebPubSubServiceClientに対して有効になっていない場合でも、1 回の呼び出しに対して詳細なログ記録を有効にすることができます。

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

HTTP 要求と応答の詳細は、このログ記録構成で stdout に出力されます。

次のステップ

その他のサンプルについては、 Python サンプル用の Azure Web PubSub サービス クライアント ライブラリを参照してください。

Contributing

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、「 共同作成者使用許諾契約書」を参照してください。

pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される指示に従います。 このアクションは、CLA を使用してすべてのリポジトリで 1 回だけ実行する必要があります。

このプロジェクトでは、Microsoft オープン ソースの行動規範が採用されています。 詳細については、「 行動規範に 関する FAQ」を参照するか、 オープン ソースの行動チーム に質問やコメントをお問い合わせください。