【问题标题】:SignalR overwriting OnConnected(), OnDisconnected()SignalR 覆盖 OnConnected()、OnDisconnected()
【发布时间】:2019-11-27 11:56:32
【问题描述】:

我正在尝试覆盖 OnConnected()OnDisconnected() 方法,但我得到了:

OnConnected()': no suitable method found to override

是否正在实现IDisconnectIConnect 接口并在Connect()Disconnect() 内进行处理与OnConnected()OnDisconnected() 相同?

什么给了?

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

【问题讨论】:

    标签: signalr signalr-hub


    【解决方案1】:

    直到今天早上,当我将 SignalR 从 2.1.0 升级到 2.1.1 时,这段代码才为我工作,现在我得到 OnDisconnected() 的“找不到合适的方法来覆盖”。我相信它需要这样写来解释一个新参数:

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

    【讨论】:

    • 经过数小时的 SignalR 2 与 1 学习后,您不应该真正添加 = true 默认值。因为如果超时触发,那将是错误的,然后您可以有逻辑来调整某些事情,例如上次看到的时间,或设置其他参数。
    【解决方案2】:

    您可能正在使用旧版本的 SignalR。阅读此http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多