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



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

1) WPF Client

2) WPF Server

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

下面是我在关闭服务器窗口时所做的代码:

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

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

谢谢你的帮助

In Server:在任何一个代理中发送自定义消息为"disconnect"

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

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

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

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

    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();
            }
    }
    

最新更新