Signalr 确定信号机中的过时连接
有许多文章展示了如何使用类似signar的工具来处理自己的高级连接 所有这些解决方案都依赖于OnDisconnect事件:Signalr 确定信号机中的过时连接,signalr,Signalr,有许多文章展示了如何使用类似signar的工具来处理自己的高级连接 所有这些解决方案都依赖于OnDisconnect事件: public override Task OnDisconnected() { SignalRConnectionManager.RemoveConnection(Context.ConnectionId); return base.OnDisconnected(); } 只要您可以依赖OnDisconnected事件,这就可以工作。如果应用程序崩溃/重新
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上添加用户,而是等待客户端通过调用服务器方法初始化用户。现在来回答你的下一个问题,信号机扩展的故事还没有最终确定,所以我不得不改天再问你。