添加关闭异常连接
This commit is contained in:
commit
09d572abce
2 files changed
+82
-12
No files matched your search
+78
-12
@@ -30,7 +30,17 @@ namespace ForwardingServerUI.Class
|
|||||||
//TcpService service = new TcpService();
|
//TcpService service = new TcpService();
|
||||||
service.Connecting = (client, e) => { return EasyTask.CompletedTask; };//有客户端正在连接
|
service.Connecting = (client, e) => { return EasyTask.CompletedTask; };//有客户端正在连接
|
||||||
service.Connected = (client, e) => {return EasyTask.CompletedTask;};//有客户端成功连接
|
service.Connected = (client, e) => {return EasyTask.CompletedTask;};//有客户端成功连接
|
||||||
service.Closing = (client, e) => {return EasyTask.CompletedTask; };//有客户端正在断开连接,只有当主动断开时才有效。
|
service.Closing = (client, e) => { //离线记录
|
||||||
|
DataRow[] dat = MainWindowViewModel._machineTable.Select("ID='" + client.Id + "'");
|
||||||
|
foreach (DataRow row in dat)
|
||||||
|
{
|
||||||
|
Application.Current.Dispatcher.Invoke(() => {
|
||||||
|
MainWindowViewModel._machineTable.Rows.Remove(row);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + "] NOT ID " + client.Id + " IP " + client.IP);
|
||||||
|
|
||||||
|
return EasyTask.CompletedTask; };//有客户端正在断开连接,只有当主动断开时才有效。
|
||||||
service.Closed = (client, e) => {
|
service.Closed = (client, e) => {
|
||||||
//离线记录
|
//离线记录
|
||||||
DataRow[] dat = MainWindowViewModel._machineTable.Select("ID='"+client.Id+"'");
|
DataRow[] dat = MainWindowViewModel._machineTable.Select("ID='"+client.Id+"'");
|
||||||
@@ -40,7 +50,7 @@ namespace ForwardingServerUI.Class
|
|||||||
MainWindowViewModel._machineTable.Rows.Remove(row);
|
MainWindowViewModel._machineTable.Rows.Remove(row);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-DD HH:mm:ss:fff") + "] NOT ID " + client.Id + " IP " + client.IP);
|
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + "] NOT ID " + client.Id + " IP " + client.IP);
|
||||||
|
|
||||||
return EasyTask.CompletedTask;
|
return EasyTask.CompletedTask;
|
||||||
};//有客户端断开连接
|
};//有客户端断开连接
|
||||||
@@ -62,6 +72,7 @@ namespace ForwardingServerUI.Class
|
|||||||
(trimmedDat[0] == '{' || trimmedDat[0] == '['))
|
(trimmedDat[0] == '{' || trimmedDat[0] == '['))
|
||||||
{
|
{
|
||||||
MainWindowViewModel.Person deserializedPerson = JsonSerializer.Deserialize<MainWindowViewModel.Person>(trimmedDat)!;
|
MainWindowViewModel.Person deserializedPerson = JsonSerializer.Deserialize<MainWindowViewModel.Person>(trimmedDat)!;
|
||||||
|
|
||||||
//转发逻辑
|
//转发逻辑
|
||||||
var dr = MainWindowViewModel._userTable.Select("Terminal='" + deserializedPerson.Terminal + "'");
|
var dr = MainWindowViewModel._userTable.Select("Terminal='" + deserializedPerson.Terminal + "'");
|
||||||
if (dr.Length > 0)
|
if (dr.Length > 0)
|
||||||
@@ -74,16 +85,28 @@ namespace ForwardingServerUI.Class
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (s_ == 90) { }
|
}
|
||||||
|
else if (s_ == 90)
|
||||||
|
{ }
|
||||||
|
Application.Current.Dispatcher.Invoke(() =>
|
||||||
|
{
|
||||||
|
DataRow drEmployee = r_.First();
|
||||||
|
drEmployee.BeginEdit();
|
||||||
|
drEmployee["HeartbeatTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");
|
||||||
|
drEmployee.EndEdit();
|
||||||
|
drEmployee.AcceptChanges();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Personm deserializedPerson = JsonSerializer.Deserialize<Personm>(DAT)!;
|
Personm deserializedPerson = JsonSerializer.Deserialize<Personm>(DAT)!;
|
||||||
Application.Current.Dispatcher.Invoke(() => {
|
Application.Current.Dispatcher.Invoke(() =>
|
||||||
var mach = MainWindowViewModel._machineTable.Select("Enterprise='" + deserializedPerson.SERVEREnterprise +
|
{
|
||||||
"'and MachineName='" + deserializedPerson.SERVERMachineName + "'");
|
var mach = MainWindowViewModel._machineTable.Select("Enterprise='" + deserializedPerson.SERVEREnterprise +
|
||||||
|
"'and MachineName='" + deserializedPerson.SERVERMachineName + "'");
|
||||||
if (mach.Length > 0)
|
if (mach.Length > 0)
|
||||||
{//刷新设备信息表
|
{
|
||||||
|
//刷新设备信息表
|
||||||
DataRow dataRow = mach.First();
|
DataRow dataRow = mach.First();
|
||||||
dataRow.BeginEdit();
|
dataRow.BeginEdit();
|
||||||
dataRow["ID"] = client.Id;
|
dataRow["ID"] = client.Id;
|
||||||
@@ -96,13 +119,13 @@ namespace ForwardingServerUI.Class
|
|||||||
dataRow.AcceptChanges();
|
dataRow.AcceptChanges();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{//添加设备信息表
|
{
|
||||||
MainWindowViewModel._machineTable.Rows.Add(client.Id, client.IP, 30, "/" + deserializedPerson.SERVEREnterprise,
|
//添加设备信息表
|
||||||
deserializedPerson.SERVERMachineName, deserializedPerson.MachineVer);
|
MainWindowViewModel._machineTable.Rows.Add(client.Id, client.IP, 30, "/" + deserializedPerson.SERVEREnterprise,
|
||||||
|
deserializedPerson.SERVERMachineName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), deserializedPerson.MachineVer);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-DD HH:mm:ss:fff") + " [LINK ID " + client.Id + " IP " + client.IP + "]\nDATA =" + DAT);
|
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + " [LINK ID " + client.Id + " IP " + client.IP + "]\nDATA =" + DAT);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -133,6 +156,49 @@ namespace ForwardingServerUI.Class
|
|||||||
await service.StartAsync();//启动
|
await service.StartAsync();//启动
|
||||||
|
|
||||||
Console.WriteLine("TcpServer:Run");
|
Console.WriteLine("TcpServer:Run");
|
||||||
|
|
||||||
|
Timer timer = new Timer(TimerCallback, null, TimeSpan.FromSeconds(90), TimeSpan.FromSeconds(30));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static async void TimerCallback(object? state)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int rows = MainWindowViewModel._machineTable.Rows.Count;
|
||||||
|
for (int i = rows; i > 0; i--)
|
||||||
|
{
|
||||||
|
DataRow dataRow = MainWindowViewModel._machineTable.Rows[i];
|
||||||
|
DateTime dateTime = DateTime.Parse(dataRow["HeartbeatTime"].ToString()!);
|
||||||
|
if (DateTime.Now > dateTime.AddSeconds(180))
|
||||||
|
{
|
||||||
|
//标记无回应连接
|
||||||
|
await Application.Current.Dispatcher.Invoke(async () =>
|
||||||
|
{
|
||||||
|
dataRow.BeginEdit();
|
||||||
|
dataRow["Start"] = 999;
|
||||||
|
dataRow.EndEdit();
|
||||||
|
dataRow.AcceptChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
//关闭无回应连接
|
||||||
|
foreach (var item in service.Clients)
|
||||||
|
{
|
||||||
|
if (item.Id == dataRow["ID"].ToString())
|
||||||
|
{
|
||||||
|
await item.CloseAsync();
|
||||||
|
|
||||||
|
//在断开连接后,释放对象。
|
||||||
|
item.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine(ex.ToString());
|
||||||
|
LogGing.ERRDATA(ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using TouchSocket.Sockets;
|
||||||
|
|
||||||
namespace ForwardingServerUI
|
namespace ForwardingServerUI
|
||||||
{
|
{
|
||||||
@@ -32,6 +33,7 @@ namespace ForwardingServerUI
|
|||||||
_machineTable.Columns.Add("Start", typeof(int));
|
_machineTable.Columns.Add("Start", typeof(int));
|
||||||
_machineTable.Columns.Add("Enterprise", typeof(string));
|
_machineTable.Columns.Add("Enterprise", typeof(string));
|
||||||
_machineTable.Columns.Add("MachineName", typeof(string));
|
_machineTable.Columns.Add("MachineName", typeof(string));
|
||||||
|
_machineTable.Columns.Add("HeartbeatTime", typeof(string));
|
||||||
_machineTable.Columns.Add("MachineVer", typeof(string));
|
_machineTable.Columns.Add("MachineVer", typeof(string));
|
||||||
|
|
||||||
|
|
||||||
@@ -52,5 +54,7 @@ namespace ForwardingServerUI
|
|||||||
{
|
{
|
||||||
Data();
|
Data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user