2017-02-16 25 views
0

SignalRクライアントでの接続を中止する際に悪意のある問題があります。SignalRクライアントHubConnection停止

ここで私のコードと一緒に行きます。

は、私は簡単な方法との接続を開始するクライアントが接続に

public void Stop() 
    { 
     _hubConnection.Stop(); 
     _hubConnection.Dispose(); 
    } 

イベントのリスナーは、接続状態が変化に気づいて、アクションを呼び出した

private void HubConnectionOnStateChanged(StateChange stateChange) 
    { 
     if (stateChange.NewState == ConnectionState.Connected) 
     { 
      if (ConnectionEvent != null) 
       ConnectionEvent.Invoke(true); 
     } 
     else 
     { 

      if (ConnectionEvent != null) 
       ConnectionEvent.Invoke(false); 
     } 
    } 

すべてを閉じるためにアクションを実行し、その後

private void Initialize() 
    { 
     var hermesHubAddress = ConfigurationManager.AppSettings["HermesUrl"]; 
     _hubConnection = new HubConnection(hermesHubAddress) 
     { 
      Credentials = CredentialCache.DefaultCredentials 
     }; 

     _hubProxy = _hubConnection.CreateHubProxy("HermesHub"); 
     _hubProxy.On<Notification>("Notify", Recieve_Message); 
     _hubConnection.Start().Wait(); 
     _hubConnection.Error += HubConnectionOnError; 
     _hubConnection.StateChanged += HubConnectionOnStateChanged; 
    } 

うまく動作し、クライアントは切断されますが、SignalRサーバブロードキャストastsメッセージ何らかの形で_hubProxyがサーバーに自動接続し、応答を取得します。

答えて

0

送信するメッセージが複数ある場合、SignalRはそれらを1つのペイロードでグループ化しようとします。これがMがアレイである理由です(SignalRプロトコルの詳細については、my postを参照してください)。

SignalRはポーリングごとに1つのメッセージしか送信できません。クライアントが1回のポーリングのために新しいHTTP要求を作成する必要があるため、ポーリングは実際には遅くなる可能性があります。ポーリング間隔よりも速くメッセージを受け取った場合は、ポーリングごとに1つのメッセージを送信してもメッセージを表示し続けることができません。

関連する問題