C# 如何在信令服务器重新启动后维护信令组和连接?

C# 如何在信令服务器重新启动后维护信令组和连接?,c#,asp.net,signalr,signalr-hub,C#,Asp.net,Signalr,Signalr Hub,我的系统由 信号服务器 多个C#客户端连接到所述信号服务器 据我所知,一旦连接,这些客户机中的每一个都会有自己的关联ConnectionId 现在,我想实现一个弹性策略,在重启SignalR服务器之后,它仍然应该保留它在集线器中曾经拥有的组和连接 我想通过将组和连接ID存储在外部存储器(例如数据库)中,并在应用程序启动时恢复来实现这一点 当服务器停机时,客户端的连接可能已断开。但是,通过让客户端总是在断开连接时尝试重新连接,可以在某种程度上缓解这种情况。一旦服务器启动,客户端将重新连接 然而,这

我的系统由

  • 信号服务器
  • 多个C#客户端连接到所述信号服务器
  • 据我所知,一旦连接,这些客户机中的每一个都会有自己的关联
    ConnectionId

    现在,我想实现一个弹性策略,在重启SignalR服务器之后,它仍然应该保留它在集线器中曾经拥有的组和连接

    我想通过将组和连接ID存储在外部存储器(例如数据库)中,并在应用程序启动时恢复来实现这一点

    当服务器停机时,客户端的连接可能已断开。但是,通过让客户端总是在断开连接时尝试重新连接,可以在某种程度上缓解这种情况。一旦服务器启动,客户端将重新连接

    然而,这种解决方案感觉相当脆弱。特别是,我不确定一旦客户端重新连接,它是否会保留相同的
    ConnectionId


    这种方法有意义吗?有更好的方法吗?

    是的,客户端总是使用相同的连接ID重新连接
    只有在以下情况下,才会续订connectionID:

  • 从客户端调用connection.stop()方法
  • 服务器已检测到客户端断开连接,并在服务器上执行断开连接+将断开连接消息发送给刚好重新连接太晚的客户端。然后这些客户端将关闭连接。因此,客户端服务器将再次同步
  • 如果客户端连接到即将重新启动的服务器,则客户端会在断开连接时注意到,并尝试使用相同的connectionID重新连接到服务器,所有这些都在由连接超时定义的给定时间范围内
    如果服务器在连接超时范围内重新启动,则客户端将使用现有ID重新连接到服务器。 在这种情况下,会在服务器上触发Reconnect()事件,而不会发生OnConnected()事件。这是一个特殊的信号器案例
    对重新连接()事件进行防御性编码。


    第章:服务器断开连接场景