技術ブログ

プログラミング、IT関連の記事中心

SignalRでの連携(UWPアプリ)

■はじめに

本記事は、SignalRを利用して、UWPのアプリからWPFのアプリのメソッドを実行する為の方法をまとめた記事の、UWPアプリの作成記事です。

■手順

Visual Studioの新規プロジェクト作成より、「空白のアプリ(ユニバーサル Windows)」を選択し、「次へ」を押下する。

プロジェクト名に任意の名前を設定し、「作成」を押下する。

「ターゲット バージョン」はそのままで、「最小バージョン」は、一番下のものに変更して、「OK」を押下する。

※明確に必要なバージョンが分かっていれば、そのバージョンを指定してください。

プロジェクトが起動したら、「ソリューション エクスプローラー」のプロジェクト名を右クリックする。

右クリックで出てきたポップアップの「NuGet パッケージ管理」を選択する。

NuGetのウィンドウの「参照」を押下する。

検索項目に「Microsoft.AspNet.SignalR.Client」を入力し、対象のパッケージを選択後、「インストール」ボタンを押下する。

※ライセンスの同意などを行い、NuGetがインストールされるのをまつ。

※「インストール」を押下場所が「アンインストール」に変われば、インストール成功です。

同様の手順で、以下のパッケージをインストールする。(一番上は、上記手順でインストールされているはずです。)

Microsoft.AspNet.SignalR.Client

プロジェクト作成時に用意されていた、「MainPage.xaml」を展開し、「MainPage.xaml.cs」を開き、以下になるように記載する。

※具体的には、「_startup」のグローバル変数の追加と、「MainWindow」のコンストラクタ内で、ローカルホストの起動を追加しています。

using Microsoft.AspNet.SignalR.Client;
using Windows.UI.Xaml.Controls;

namespace SignalRSampleClient
{
    public sealed partial class MainPage : Page
    {
        private HubConnection _connection;

        public MainPage()
        {
            this.InitializeComponent();
            var connection = new HubConnection("http://localhost:8080/device");
            connection.Closed += Connection_Closed;
            connection.StateChanged += (state) =>
            {
                if (state.NewState == ConnectionState.Connected)
                {
                    _connection = connection;
                }
            };
            var proxy = connection.CreateHubProxy("Sample");
            connection.Start().Wait();
            proxy.Invoke("CallSample").Wait();
        }

        private void Connection_Closed()
        {
            System.Diagnostics.Debug.WriteLine("=====Connection Closed=====");
        }
    }
}

こちらのソースは以下のGithubにアップしています。

https://github.com/nakkann-1013/SignalR_UWP_Sample_Client