我正在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功能。
-
启动第二次窗口加载部分:
Get_App_Info_Proxy.On<string>("IO_Stay_Active", (responseHeartBeat) => OnReceiveDataHeartBeat(responseHeartBeat));
-
在第二个窗口调用部分,只需根据服务器能够承受的负载定期检查一次,对于我的情况是一分钟一次。
private void hbeatTimer_Tick(object sender, EventArgs e) { Get_App_Info_Proxy.Invoke("IO_Stay_Active"); }
-
第二个窗口接收部分:
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(); } }