blazor wasm(hosted)とSignalR

以前、同じようなタイトルで、asp.net core blazor wasm版とSingalRの話を投稿した様な気がするが、blazor wasm版から既存のHubに接続できず、色々試したのだが、結局解決しなかった。

やはり、現状ではhostedプロジェクトとして作成し、同一ドメインでのみしかSignalRを利用できないようだ。

なので、とりあえず、hostedプロジェクトを試してみた。
まず、下記コマンドで、クライアントとサーバプロジェクトを作成する。

dotnet new blazorwasm --hosted -o <ソリューション名>

ソリューションフォルダ下に下記プロジェクトフォルダが作成される。

  • Client-blazor wasm プロジェクト
  • Server-asp.netプロジェクト
  • Shared-共通DLLプロジェクト

ClientプロジェクトにはSharedプロジェクトの参照が含まれ、ServerプロジェクトにはSharedプロジェクトとClientプロジェクトの参照が含まれる。つまり、共通クラスやInterface等はSharedプロジェクトに定義しておけば、Client/Server双方から参照出来るようになっている。

ServerプロジェクトにHUB本体を作成し、HubのEndpoint定義をして、ClientプロジェクトにSignalRクライアントライブラリを追加し、

dotnet add Client package Microsoft.AspNetCore.SignalR.Client

下記要領でHubに接続するコードを書くことで、ServerのHubに接続できるようになる。

    private HubConnection con;
          ・・・
            con = new HubConnectionBuilder()
                .WithUrl(NavigationManager.ToAbsoluteUri("/[ハブのエンドポイント]"))
                .Build();
           ・・・
            // 接続
            await con.StartAsync();

後はServerプロジェクトを起動して、ブラウザからアクセスするだけ。
もちろん、blazor server side版やWindows FormsなどからもこのHubに接続できる。

詳しくは、MSのサイト「Blazor WebAssembly で ASP.NET Core SignalR を使用する」をどうぞ。

正式リリース版では是非とも、既存サイトのHUBに接続できるようになって欲しいな。

takezou について

ソフトウェア開発会社(ITと言う言葉は大嫌い)で働く、元技術者。 未だに、社内システム位は作ってますが・・・ プログラミング言語はC#が好き。
カテゴリー: asp.net core, Blazor, C#, dotnetcore, SignalR, 技術系 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください