次の方法で共有


クイックスタート: Azure Web PubSub サービス SDK を使用してメッセージを発行する

Azure Web PubSub は、WebSocket クライアントの管理に役立ちます。 このクイックスタートでは、Azure Web PubSub サービス SDK を使用して WebSocket クライアントにメッセージを発行する方法について説明します。

前提条件

  • Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。
  • Bash と PowerShell コマンド シェル。 Python、Javascript、Java のサンプルでは、Bash コマンド シェルが必要です。
  • VSCode などのファイル エディター。
  • Azure CLI: Azure CLI をインストールする

ローカル コンピューターでプロジェクトを作成する場合は、以下のように使用している言語の依存関係をインストールする必要があります。

.NET Core SDK と aspnetcore の両方と dotnet ランタイムをインストールします。

.NET Core

1. セットアップ

CLI から Azure にサインインするには、次のコマンドを実行し、プロンプトに従って認証プロセスを完了します。 Cloud Shell を使用している場合は、サインインする必要はありません。

az login

upgrade コマンドを使用して、最新バージョンの CLI を実行していることを確認します。

az upgrade

次に、az upgrade でインストールされていない場合は、CLI 用の Azure Web PubSub 拡張機能をインストールまたは更新します。

az extension add --name webpubsub --upgrade

1. リソース グループを作成する

以下の環境変数を設定します。 <プレースホルダー> を、一意の Web PubSub 名に置き換えてください。

RESOURCE_GROUP="webpubsub-resource-group"
LOCATION="EastUS"
WEB_PUBSUB_NAME="<your-unique-name>"

Web PubSub プロジェクトのリソース グループを作成します。

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

2. Web PubSub サービス インスタンスをデプロイする

az webpubsub create コマンドを使用して、Web PubSub サービス インスタンスを作成してデプロイします。

az webpubsub create \
  --name $WEB_PUBSUB_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --sku Free_F1

サービスの接続文字列を保存します。 接続文字列は、メッセージを発行するためにサービス SDK によって使用されます。

重要

運用環境では、Azure Key Vault を使用して接続文字列を安全に格納する必要があります。

az webpubsub key show --name $WEB_PUBSUB_NAME --resource-group $RESOURCE_GROUP --query primaryConnectionString

3. クライアントをサービス インスタンスに接続する

Web PubSub クライアントを作成します。 クライアントは、サービスが終了するまでサービスへの接続を維持します。

az webpubsub client コマンドを使用して、サービスへの WebSocket クライアント接続を開始します。 クライアントは常にハブに接続するため、クライアントが接続するハブ名を指定します。

az webpubsub client start \
  --name $WEB_PUBSUB_NAME \
  --resource-group $RESOURCE_GROUP \
  --hub-name "myHub1" \
  --user-id "user1"

クライアントが正常に接続され、一意の connectionId が割り当てられていることを示す JSON メッセージが表示されたら、Web PubSub サービスへの接続が確立されています。

{"type":"system","event":"connected","userId":"user1","connectionId":"<your_unique_connection_id>"}

4. サービス SDK を使用してメッセージを発行する

Azure Web PubSub SDK を使用して、ハブに接続されているすべてのクライアントにメッセージを発行します。 C#、JavaScript、Python、Java から選択できます。 各言語の依存関係は、その言語の手順でインストールされます。 Python、JavaScript、Java では、このクイックスタートのコマンドを実行するために bash シェルが必要であることに注意です。

メッセージを発行するプロジェクトを設定する

  1. このプロジェクトの新しいコマンド シェルを開きます。

  2. クライアント シェルからの接続文字列を保存します。 <your_connection_string>プレースホルダーを、前のステップで表示した接続文字列に置き換えます。

    connection_string="<your_connection_string>"
    
  3. ここで、プロジェクトの言語を選択します。

  1. publisher という名前の新しいプロジェクトと SDK パッケージ Azure.Messaging.WebPubSub を追加します。

    mkdir publisher
    cd publisher
    dotnet new console
    dotnet add package Azure.Messaging.WebPubSub
    
  2. Program.cs ファイルを更新し、WebPubSubServiceClient クラスを使用してクライアントにメッセージを送信できるようにします。 Program.cs ファイル内のコードを次のコードに置き換えます。

    using System;
    using System.Threading.Tasks;
    using Azure.Messaging.WebPubSub;
    
    namespace publisher
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                if (args.Length != 3) {
                    Console.WriteLine("Usage: publisher <connectionString> <hub> <message>");
                    return;
                }
                var connectionString = args[0];
                var hub = args[1];
                var message = args[2];
    
                var service = new WebPubSubServiceClient(connectionString, hub);
    
                // Send messages to all the connected clients
                // You can also try SendToConnectionAsync to send messages to the specific connection
                await service.SendToAllAsync(message);
            }
        }
    }
    

    service.SendToAllAsync() の呼び出しでは、単純にハブ内の接続されているすべてのクライアントにメッセージが送信されます。

  3. 次のコマンドを実行して、サービスにメッセージを発行します。

    dotnet run $connection_string "myHub1" "Hello World"
    
  4. Web PubSub クライアントを含む前のコマンド シェルには、受信したメッセージが表示されます。

    {"type":"message","from":"server","dataType":"text","data":"Hello World"}
    

クリーンアップ

このクイック スタートで作成したリソースは、それらを含むリソース グループを削除することで削除できます。

az group delete --name $RESOURCE_GROUP --yes