2012-11-23 19 views
7

मैं OnConnected(), OnDisconnected() पद्धतियों अधिलेखित करने के लिए कोशिश कर रहा हूँ, लेकिन मैं मिलता है: OnConnected() ': कोई उपयुक्त विधि ओवरराइड करने के लिएSignalR OnConnected(), OnDisconnected() अधिलेखन

को लागू करने IDisconnect, iConnect है पाया इंटरफेस और कनेक्ट() और डिस्कनेक्ट() के भीतर मेरी प्रोसेसिंग ऑनकनेक्टेड(), ऑनडिस्कनेक्टेड() के समान है?

क्या देता है?

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

उत्तर

12

यह कोड आज सुबह तक मेरे लिए काम करता था जब मैंने 2.1.0 से 2.1.1 तक सिग्नलआर को अपग्रेड किया, और अब मुझे ऑनडिस्कनेक्टेड() के लिए "ओवरराइड करने के लिए कोई उपयुक्त विधि नहीं मिली" है। मेरा मानना ​​है कि यह इस तरह लिखे जाने की बजाय एक नया पैरामीटर के लिए खाते में करने की जरूरत है:

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

बस SignalR 2 सीखने बनाम 1 के घंटों के बाद अब की तलाश में, क्या तुम सच में '= TRUE' डिफ़ॉल्ट जोड़ने चाहिए। क्योंकि यह गलत होगा, अगर टाइमआउट आग लगती है, और फिर आप कुछ चीजों को समायोजित करने के लिए तर्क कर सकते हैं, जैसे अंतिम बार देखा गया समय, या अन्य पैरामीटर सेट करें। – ppumkin

संबंधित मुद्दे