次の方法で共有


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

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

[前提条件]

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

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

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

.NET Core

1. セットアップ

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

az login

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

az upgrade

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

az extension add --name webpubsub --upgrade

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

以下の環境変数を設定します。 <placeholder> を一意の 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 がメッセージを公開するために使用されます。

Von Bedeutung

運用環境では、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"

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

{"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