2016-06-24 15 views
2

SignalRクライアントの接続が切断された場合、クライアントが再接続を試みるようにします。これはこれを実装するための良いパターンですか?私は、接続を再開して、SignalR接続のClosedイベントを処理することを指しています。SignalRクライアントの接続を維持する

public class OnPremiseWebHubClient 
{ 
    private HubConnection _hubConnection; 
    private IHubProxy _hubProxy; 

    private OnPremiseWebHubClient() { } 
    static OnPremiseWebHubClient() { } 
    private static readonly OnPremiseWebHubClient _instance = new OnPremiseWebHubClient(); 
    public static OnPremiseWebHubClient Instance { get { return _instance; } } 

    public async Task Start() 
    { 
     _hubConnection = new HubConnection("http://OnPremiseWeb/"); 
     _hubProxy = _hubConnection.CreateHubProxy("OnPremiseHub"); 

     // IS THIS A GOOD PATTERN FOR KEEPING THE CONNECTION ALIVE? 
     _hubConnection.Closed += async() => 
     { 
      // reconnect if we close 
      await _hubConnection.Start(); 
     }; 

     await _hubConnection.Start(); 
    } 
} 

答えて

1

SignalRには独自の再接続メカニズムがあります。しかし、いくつかの再試行の後、状態は切断/切断に変わります。 Disconnected/Closed状態は、シグナルが再接続しようとしましたが、それは達成できませんでした。だから、そこに再接続して継続的に再接続するのが良い場所です。

欠点が1つあります。モバイルでは、バッテリーを使用して再接続します。

詳細はhereをご覧ください。

関連する問題