2012-11-23 17 views
7

Sto cercando di sovrascrivere OnConnected(), OnDisconnected() metodi ma ottengo: OnConnected() ': nessun metodo adeguato trovato per ignorareSignalR sovrascrivendo OnConnected(), OnDisconnected()

sta attuando IDisconnect, IConnect si interfaccia e esegue l'elaborazione in Connect() e Disconnect() come OnConnected(), OnDisconnected()?

cosa dà?

public static class UserHandler 
    { 
     public static HashSet<string> ConnectedIds = new HashSet<string>(); 
    } 

    public class MyHub : Hub 
    { 
     public override Task OnConnected() 
     { 
      UserHandler.ConnectedIds.Add(Context.ConnectionId); 
      return base.OnConnected(); 
     } 

     public override Task OnDisconnected() 
     { 
      UserHandler.ConnectedIds.Remove(Context.ConnectionId); 
      return base.OnDisconnected(); 
     } 
    } 

risposta

12

Questo codice ha funzionato per me fino a questa mattina quando ho aggiornato SignalR da 2.1.0 a 2.1.1, e ora ottengo "nessun metodo adatto trovato per sovrascrivere" per OnDisconnected(). Credo che deve essere scritto in questo modo invece per tenere conto di un nuovo parametro:

public override Task OnDisconnected(bool stopCalled = true) 
{ 
    UserHandler.ConnectedIds.Remove(Context.ConnectionId); 
    return base.OnDisconnected(stopCalled); 
} 
+0

Solo guardando ora, dopo ore di apprendimento SignalR 2 vs 1, non dovreste davvero aggiungere l'= default 'true'. Perché ciò sarà falso, se il timeout si attiva e puoi quindi avere la logica per regolare alcune cose, come l'ultima volta che si è visto o impostare altri parametri. – ppumkin

Problemi correlati