2012-11-23 20 views
7

Tôi đang cố gắng để ghi đè lên OnConnected(), OnDisconnected() phương pháp nhưng tôi nhận được: OnConnected() ': không có phương pháp thích hợp tìm thấy để ghi đèSignalR ghi đè OnConnected(), OnDisconnected()

đang triển khai IDisconnect, iConnect giao diện và xử lý của tôi trong Connect() và Disconnect() giống như OnConnected(), OnDisconnected()?

điều gì mang lại?

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

Trả lời

12

Mã này làm việc cho tôi cho đến sáng nay khi tôi nâng cấp SignalR từ 2.1.0 lên 2.1.1 và bây giờ tôi nhận được "không có phương thức phù hợp nào được tìm thấy để ghi đè" cho OnDisconnected(). Tôi tin rằng nó cần phải được viết như thế này thay vì tài khoản cho một tham số mới:

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

Chỉ cần nhìn sau giờ học SignalR 2 vs 1, bạn không nên thêm '= true' mặc định. Bởi vì đó sẽ là sai, nếu thời gian chờ cháy, và bạn có thể có logic để điều chỉnh những thứ nhất định, như thời gian nhìn thấy lần cuối, hoặc thiết lập các thông số khác. – ppumkin