signalr - 确定信号器中的陈旧连接

标签 signalr

有很多文章展示了如何使用 SignalR 进行自己的高级连接处理,例如 this blog post about "Mapping ASP.NET SignalR Connections to Real Application Users" .

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

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

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

问题:我的数据库中有该连接。我知道其中许多连接已经过时。 SignalR 是否有可能找出连接是否失效?我试过了

Clients.Client[StaleConnectionId]

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

有什么建议吗?

最佳答案

不,无法检查“陈旧”连接。我假设您的麻烦在于以某种方式保留用户状态,并且您想知道何时使它们过期。

SignalR 具有根据空闲事件使连接过期的故障安全机制,因此我建议在您的应用程序逻辑中构建一个空闲功能,通过该功能可以使用户过期。

我已经在 ShootR 中实现了这个逻辑( https://github.com/NTaylorMullen/ShootR ) 如果你想有一个基础来工作。

希望这有帮助!

关于signalr - 确定信号器中的陈旧连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057084/

相关文章:

c# - 没有 MVC 的 SignalR?

javascript - “Hub”是一个不明确的指代

Asp.Net : Best way to broadcast data from WCF service to Asp. 网络客户端

asp.net-mvc - 在 IIS Express 中测试 SignalR 应用程序

javascript - 在浏览器中提醒用户单独选项卡中的事件

c# - 带有信号器的 Angular 2 在断开连接时自动重新连接到集线器

asp.net-mvc-4 - SignalR 连接错误

azure - 如果浏览器选项卡处于非事件状态,则 SignalR 连接超时

signalr - 向 hub 方法添加一些过滤器(如 MVC 中的 AcctionFilters)

c# - SignalR OnConnected - 向连接的客户端发送消息