MRが楽しい

MRやVRについて学習したことを書き残す

AzureのSignalRServiceを使ってサーバからHoloLens2にデータを送信する その2(Azure Functionの関数作成)

本日は Azure と HoloLens2 の技術調査枠です。
Azure の SignalRService を使ってサーバから HoloLens2 にデータを送信する方法を試したので作業記録を記事にします。
f:id:bluebirdofoz:20210626013223j:plain

前回記事の続きです。
bluebirdofoz.hatenablog.com

Azure Functionの関数作成

今回は Azure Function の関数作成に VisualStudio2019 のテンプレートを利用します。
テンプレート利用のため、予め VisualStudioInstoller から[Azureの開発]をインストールしておきます。
f:id:bluebirdofoz:20210626013250j:plain

プロジェクトの作成

VisualStudio2019 を起動し、[新しいプロジェクトの作成]から[Azure Function]を選択します。
f:id:bluebirdofoz:20210626013316j:plain

プロジェクト名と作成ディレクトリを指定し、[作成]をクリックします。
f:id:bluebirdofoz:20210626013300j:plain

テンプレートの選択ダイアログが表示されるので[SignalR]を選択します。
今回は参照の記事に合わせて[Authorization level]に[Anonymous]、[Hub name]に[sample]を指定します。
f:id:bluebirdofoz:20210626013348j:plain

Tips

[Authorization level]に[Anonymous]を指定した場合、その関数はファンクションキー無しに URL へのアクセスのみで利用可能になるので取り扱いに注意が必要です。
docs.microsoft.com

[作成]ボタンをクリックすると、プロジェクトが作成されます。
SignalR Service への接続先を問い合わせるための negotiate 関数が自動で生成されています。
f:id:bluebirdofoz:20210626013406j:plain

次に SignalR Service に通知を投げる関数を実装します。
参照の記事と同様に broadcast 関数を追加しました。
f:id:bluebirdofoz:20210626013420j:plain

blog.xin9le.net

以下、参照記事からの抜粋です。

[FunctionName("broadcast")]  // 任意
public static async Task BroadcastAsync
(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequest request,  // POST で投げることにする
    [SignalR(HubName = "sample")] IAsyncCollector<SignalRMessage> messages
)
{
    var data = await request.ReadAsStringAsync();  // 受け取ったデータを取り出す
    await messages.AddAsync(new SignalRMessage  // 出力バインディングを使って SignalR Service に投げ込む
    {
        Target = "Receive",  // 配信先の 'Receive' を呼び出す
        Arguments = new[] { data },  // Push 配信するデータ
    });
}

関数の発行

次に作成した関数を Azure Function に発行します。
f:id:bluebirdofoz:20210626013430j:plain

メニューから[ビルド -> (プロジェクト名)の発行]を選択します。
f:id:bluebirdofoz:20210626013444j:plain

公開先の選択ダイアログが表示されます。
[ターゲット]には[Azure]を選択します。
f:id:bluebirdofoz:20210626013457j:plain

[特定のターゲット]には[Azure Function App(Windows)]を選択します。
f:id:bluebirdofoz:20210626013510j:plain

[Functions インスタンス]には先ほど作成した Azure Function のインスタンスを選択して[完了]をクリックします。
f:id:bluebirdofoz:20210626014148j:plain

これで関数のビルドが実行されます。
[公開]タブが開くので、[発行]ボタンをクリックします。
f:id:bluebirdofoz:20210626013533j:plain

これで関数の発行が完了します。
f:id:bluebirdofoz:20210626013544j:plain

Azure Function のページで[関数]タブを確認すると、作成した関数を確認できます。
f:id:bluebirdofoz:20210626013827j:plain

[概要]タブから Azure Function の[URL]をアクセス先として取得しておきます。
f:id:bluebirdofoz:20210626013945j:plain

長くなったので分けます。
次はクライアントアプリの作成です。
bluebirdofoz.hatenablog.com