如果 signalR server(WPF) 意外停止,如何注销所有客户端?

How can I Log out all the clients if signalR server(WPF) stopped accidentally?

我正在 WPF 中使用 signalR 开发聊天应用程序。里面有两个项目:

1) WPF 客户端

2) WPF 服务器

如果服务器在任何时候意外停止,我想断开连接并在客户端再次显示登录屏幕。

这是我在关闭服务器时所做的代码 window:

    private void ServerMainWindow_Closed(object sender, CancelEventArgs e)
    {
        if (SignalR != null)
        {
            SignalR.Dispose();
        }
    }

我可以从这里处理数据库相关的东西,但我如何管理客户端?

感谢您的帮助。

在服务器中:在任一代理中将自定义消息作为 "disconnect" 发送。

在客户端中:检查自定义消息并重定向到登录表单,因为 WPF signalR 客户端没有 onDisconnect 内置函数。

  1. 第二次 window 加载启动部分:

    Get_App_Info_Proxy.On<string>("IO_Stay_Active", (responseHeartBeat) => OnReceiveDataHeartBeat(responseHeartBeat));
    
  2. 第二次调用部分 window,只需根据服务器能够承受的负载定期检查,对于我来说,它是一分钟一次。

    private void hbeatTimer_Tick(object sender, EventArgs e)
    {
       Get_App_Info_Proxy.Invoke("IO_Stay_Active");
    }
    
  3. 二号接收部分window:

    private void OnReceiveDataHeartBeat(string responseHeartBeat)
    {
         if (responseHeartBeat == "IO_101") // I would prefer custom code programmed in server
            {
                  Login loginform = new Login(); // redirecting first form
                  loginform.Show();
            }
    }