2017-02-16 1 views
0

Ich habe ein bösartiges Problem mit dem Beenden der Verbindung im SignalR-Client.SignalR Client HubConnection Stop

Hier gehen wir mit meinem Code.

Ich fange Verbindung mit einer einfachen Methode

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; 
    } 

dann, wenn der Client eine Aktion ausführt Verbindung

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

Ereignis listner bemerkt Verbindungszustand geändert und aufgerufen Aktion

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

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

alles schließen funktioniert gut und Client ist getrennt, aber wenn SignalR Server Broadc ast message irgendwie _hubProxy autoreconnect zum Server und bekommt Antwort.

Antwort

0

Wenn mehr als eine Nachricht gesendet werden soll, versucht SignalR, sie in einer Nutzlast zu gruppieren. Dies ist der Grund, warum M ein Array ist (Sie können mehr über SignalR-Protokoll in my post finden).

SignalR kann nicht nur eine Nachricht pro Abfrage senden. Das Polling kann sehr langsam sein, da der Client eine neue HTTP-Anfrage für eine Umfrage erstellen muss. Wenn Sie Nachrichten erhalten, die schneller als das Intervall zwischen den Umfragen sind, können Sie nicht mithalten, wenn Sie nur eine Nachricht pro Umfrage senden und Sie beginnen, Nachrichten zu verpassen.

Verwandte Themen