确定信号器中的陈旧连接

时间:2013-02-24 21:53:02

标签: signalr

有很多文章介绍如何使用this blog post about "Mapping ASP.NET SignalR Connections to Real Application Users"等SignalR进行高级连接处理。

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

public override Task OnDisconnected()
{
    SignalRConnectionManager.RemoveConnection(Context.ConnectionId);
    return base.OnDisconnected();
}

只要您可以依赖OnDisconnected事件,这就有效。如果您的应用程序崩溃/重新启动或服务器重新启动,那么您将无法获得每个连接的OnDisconnected事件。

问题:我的数据库中有连接。我知道其中许多连接都是陈旧的。 SignalR是否有可能发现连接是否陈旧?我试过了

Clients.Client[StaleConnectionId]

希望在连接ID无效的情况下为null或异常。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

没有办法检查“陈旧”连接。我假设你的麻烦在于以某种方式坚持用户状态,你想知道什么时候过期。

SignalR的安全失败使得基于空闲活动的连接失效,因此我建议在您的应用程序逻辑中构建一个空闲功能,以便用户过期。

我已经在ShootRhttps://github.com/NTaylorMullen/ShootR)中实现了这个逻辑,以防您希望有一个基础来解决问题。

希望这有帮助!