次の方法で共有


サーバーからメッセージをプッシュする

使い慣れた HTTP 要求/応答モデルは、使いやすくスケーラブルであるように設計されています。 ただし、今日のエンド ユーザーは、当初の設計よりも多くを Web に対して求めています。 HTTP プロトコルでは、応答を受信するためにユーザーが要求を開始する必要があります。 しかし、開発者は、要求しなくてもサーバーからクライアントにデータを送信する方法を必要としています。つまり、オークション サイトにおける製品の最新の入札価格や金融アプリケーションでの動きの速い株価をプッシュするなど、クライアントにデータを "プッシュ" する必要があります。

データを接続されているクライアントにデータをプッシュするアプリケーション サーバーの GIF。

このクイックスタート ガイドでは、次の方法を示します

  • アプリケーション サーバーからのメッセージをサブスクライブする
  • アプリケーション サーバーから接続されているすべてのクライアントにデータをプッシュする

前提条件

サブスクライバー クライアントを作成する

アプリケーション サーバーからプッシュされたメッセージにサブスクライブするには、クライアント (ブラウザー、モバイル アプリ、IoT デバイスなど) を最初に Web PubSub リソースに接続する必要があり、クライアントで適切なメッセージ イベントがリッスンされます。

subscriber という名前のプロジェクト ディレクトリを作成し、必要な依存関係をインストールします

mkdir subscriber
cd subscriber
npm init -y
    
# The client SDK is available as a module on NPM
npm install @azure/web-pubsub-client

Web PubSub リソースに接続し、server-message イベントのリスナーを登録する

クライアントは、"クライアント アクセス URL" を使用してリソースに接続して認証します。 この URL は、wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token> のパターンに従います。 クライアントには、クライアント アクセス URL を取得するいくつかの方法があります。 このクイック スタートでは、次の図に示す Azure portal からコピーして貼り付けることができます。 コードでクライアント アクセス URL をハード コーディングしないことをお勧めします。 運用環境では、通常、この URL をオンデマンドで返すようにアプリ サーバーを設定します。 「クライアント アクセス URL を生成する」で手順について詳しく説明します。

この図は、クライアント アクセス URL を取得する方法を示しています。

上の図に示すように、クライアントは myHub1 という名前のハブに参加しています。

subscriber プロジェクト フォルダーで、次のコードを含む subscribe.js という名前のファイルを作成します

const { WebPubSubClient } = require("@azure/web-pubsub-client");

// Instantiates the client object
// <client-access-url> is copied from Azure portal mentioned above
const client = new WebPubSubClient("<client-access-url>")

// Registers a handler for the "server-message" event
client.on("server-message", (e) => {
    console.log(`Received message ${e.message.data}`)
});

// Before a client can receive a message, 
// you must invoke start() on the client object.
client.start();

プログラムを実行する

node subscribe.js

これで、このクライアントでは Web PubSub リソースとの接続を確立し、アプリケーション サーバーからプッシュされたメッセージを受信する準備ができました。

アプリケーション サーバーからメッセージをプッシュする

クライアントが Web PubSub リソースに接続されたので、Web PubSub によって提供されるサーバー SDK を使用して、アプリケーション サーバーからメッセージをいつでもプッシュできます。

publisher という名前の "新しい" プロジェクト ディレクトリを作成し、必要な依存関係をインストールします

mkdir publisher
cd publisher

npm init

# This command installs the server SDK from NPM, 
# which is different from the client SDK you used in subscribe.js
npm install --save @azure/web-pubsub

次のコードを使用して、publish.js ファイルを作成する

const { WebPubSubServiceClient } = require('@azure/web-pubsub');

// This is the hub name we used on Azure portal when generating the Client Access URL. 
// It ensures this server can push messages to clients in the hub named "myHub1".
const hub = "myHub1";
    
let server = new WebPubSubServiceClient(process.env.WebPubSubConnectionString, hub);

// By default, the content type is `application/json`. 
// Specify contentType as `text/plain` for this demo.
server.sendToAll(process.argv[2], { contentType: "text/plain" });

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

接続文字列を取得する

重要

接続文字列には、アプリケーションが Web PubSub サービスにアクセスするために必要な認可情報が含まれています。 接続文字列内のアクセス キーは、サービスのルート パスワードに似ています。

このクイックスタート ガイドでは、次に示すように、Azure portal から取得します。 図には、クライアント アクセス URL を取得する方法が示されています。

サーバー プログラムを実行する

"新しい" コマンド シェルで、次のコマンドを実行します。

# Set the environment variable for your connection string.
export WebPubSubConnectionString="<Put your connection string here>" 

node publish.js "Hello World"

クライアント側で受信したメッセージを確認する

接続されているクライアントにデータをプッシュするアプリ サーバーの GIF。

複数のコマンド シェルで同じ "サブスクライブ" プログラムを実行して、複数のクライアントを刺激してみてください。 "発行" プログラムが実行されるとすぐに、これらのクライアントすべてにリアルタイムで配信されているメッセージが表示されます。

まとめ

このクイックスタートでは、アプリケーション サーバーからハブ内の接続されているすべてのクライアントにメッセージをプッシュする簡単な方法について説明しました。 さらに、Web PubSub を使用すると、メッセージを次にプッシュできます

  • ハブ内のクライアントのサブセット
  • ハブ内の特定のグループ
  • グループ内のクライアントのサブセット

これらの API を使用すると、大量のユース ケースに対応でき、開発者は独自のビジネス ロジックに集中しながら、Web PubSub により低待機時間 (<100 ミリ秒)高可用性大規模なスケール (100 万以上の同時接続) が確保されます。

次のステップ

次の手順では、完全な Web アプリケーションを構築するために必要な Web PubSub のイベント システムを操作する方法について説明します。