shuhelohelo’s blog

Xamarin.Forms多めです.

SignalRの自動再接続

環境

前回はサーバーとSignalRで通信を行うクライアントをWPFで作成しました.

shuhelohelo.hatenablog.com

リアルタイム通信ですが途中で接続が切れてしまった場合に自動的に再接続することで,利便性が高まります.

SignalRは自動再接続の仕組みがあり,とても簡単な記述でこの機能を実現することができます.

基本的にはHubConnectionBuilderでWithAutomaticReconnectを入れるだけです.

            connection = new HubConnectionBuilder()
                .WithUrl(@"https://localhost:44350/chathub")//サーバー側でMapHubで指定したURLを指定する.
                .WithAutomaticReconnect()
                .Build();

これだけで自動再接続を行ってくれるようになります.

わかりやすいように接続状態の変化ごとにメッセージが表示されるようになっています.

サーバーとクライアントを起動させて,クライアントからサーバーに接続してから,サーバーを落とします.

すると再接続を試み,Reconnectingと表示されます.でも,サーバーが起動していないので接続はできません.

次にサーバーを起動すると,Reconnectedと表示され,メッセージを送れることが確認できます.

f:id:shuhelohelo:20191008165523p:plain