Signalr 确定信号机中的过时连接

Signalr 确定信号机中的过时连接,signalr,Signalr,有许多文章展示了如何使用类似signar的工具来处理自己的高级连接 所有这些解决方案都依赖于OnDisconnect事件: public override Task OnDisconnected() { SignalRConnectionManager.RemoveConnection(Context.ConnectionId); return base.OnDisconnected(); } 只要您可以依赖OnDisconnected事件,这就可以工作。如果应用程序崩溃/重新

有许多文章展示了如何使用类似signar的工具来处理自己的高级连接

所有这些解决方案都依赖于OnDisconnect事件:

public override Task OnDisconnected()
{
    SignalRConnectionManager.RemoveConnection(Context.ConnectionId);
    return base.OnDisconnected();
}
只要您可以依赖OnDisconnected事件,这就可以工作。如果应用程序崩溃/重新启动或服务器重新启动,则不会为每个连接获得OnDisconnected事件

问题:我的数据库中有这个连接。我知道这些联系中有很多已经过时了。信号器中是否有可能发现连接是否过时?我试过了

Clients.Client[StaleConnectionId]
希望在连接ID无效的情况下出现null或异常


有什么建议吗

否无法检查“过时”连接。我假设您的问题在于以某种方式保持用户状态,并且您想知道何时使其过期

SignalR具有基于空闲活动使连接过期的故障保护功能,因此我建议在应用程序逻辑中构建一个空闲功能,您可以通过该功能使用户过期

我已经在()中实现了这个逻辑,以防您想要有一个工作的基础


希望这有帮助

好的,我也实施了一些安全措施。我曾希望找到一个更干净的解决方案…@N.泰勒·马伦,你能告诉我逻辑到底在哪里吗?你指的是什么逻辑?Shotter中的逻辑?是的Shotter中的逻辑。实际上,我有一个更大的问题,假设我们有N个集群信号服务器(例如,公共云环境)。在这种情况下,有没有办法计算出给定通道的状态?(即,给定连接是否已连接)在Shooter中,用户管理通过UserHandler.cs类处理。但它不会在OnConnected上添加用户,而是等待客户端通过调用服务器方法初始化用户。现在来回答你的下一个问题,信号机扩展的故事还没有最终确定,所以我不得不改天再问你。