|
|
@ -21,6 +21,9 @@ using WebSocket4Net;
|
|
|
|
using System.IO;
|
|
|
|
using System.IO;
|
|
|
|
using System.Text.Encodings.Web;
|
|
|
|
using System.Text.Encodings.Web;
|
|
|
|
using System.Text.Unicode;
|
|
|
|
using System.Text.Unicode;
|
|
|
|
|
|
|
|
using static System.Windows.Forms.Design.AxImporter;
|
|
|
|
|
|
|
|
using System.Net.Sockets;
|
|
|
|
|
|
|
|
using System.Security.Policy;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -42,9 +45,45 @@ namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
private void WebSocket4Net_MessageReceived(string message)
|
|
|
|
private void WebSocket4Net_MessageReceived(string message)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug.WriteLine($"服务端回复数据:{message}!");
|
|
|
|
Debug.WriteLine($"服务端回复数据:{message}!");
|
|
|
|
if(message == "sigin")
|
|
|
|
using (JsonDocument document = JsonDocument.Parse(message))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
MessageBox.Show("登录成功");
|
|
|
|
JsonElement root = document.RootElement;
|
|
|
|
|
|
|
|
if (root.TryGetProperty("type", out JsonElement dataElement))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
string type = dataElement.ToString();
|
|
|
|
|
|
|
|
switch (type)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
case CSMessage.sigin:
|
|
|
|
|
|
|
|
var user= JsonSerializer.Deserialize<SCUserSigin>(message, new JsonSerializerOptions
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// 整齐打印
|
|
|
|
|
|
|
|
WriteIndented = true,
|
|
|
|
|
|
|
|
//重新编码,解决中文乱码问题
|
|
|
|
|
|
|
|
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case CSMessage.subscribe:
|
|
|
|
|
|
|
|
var sub= JsonSerializer.Deserialize<SCUserSubscribeMessage>(message, new JsonSerializerOptions
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// 整齐打印
|
|
|
|
|
|
|
|
WriteIndented = true,
|
|
|
|
|
|
|
|
//重新编码,解决中文乱码问题
|
|
|
|
|
|
|
|
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case CSMessage.publish:
|
|
|
|
|
|
|
|
var publish = JsonSerializer.Deserialize<SCDevicePublish>(message, new JsonSerializerOptions
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// 整齐打印
|
|
|
|
|
|
|
|
WriteIndented = true,
|
|
|
|
|
|
|
|
//重新编码,解决中文乱码问题
|
|
|
|
|
|
|
|
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void WebSocket_Error(SuperSocket.ClientEngine.ErrorEventArgs e)
|
|
|
|
void WebSocket_Error(SuperSocket.ClientEngine.ErrorEventArgs e)
|
|
|
@ -105,14 +144,14 @@ namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
get { return isIndeterminate; }
|
|
|
|
get { return isIndeterminate; }
|
|
|
|
set { SetProperty(ref isIndeterminate, value); }
|
|
|
|
set { SetProperty(ref isIndeterminate, value); }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private string account;
|
|
|
|
private string account="admin";
|
|
|
|
|
|
|
|
|
|
|
|
public string Account
|
|
|
|
public string Account
|
|
|
|
{
|
|
|
|
{
|
|
|
|
get { return account; }
|
|
|
|
get { return account; }
|
|
|
|
set { SetProperty(ref account, value); }
|
|
|
|
set { SetProperty(ref account, value); }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private string password;
|
|
|
|
private string password="123";
|
|
|
|
|
|
|
|
|
|
|
|
public string Password
|
|
|
|
public string Password
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -158,9 +197,9 @@ namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
//设置监听文件类型
|
|
|
|
//设置监听文件类型
|
|
|
|
watcher.Filter = fileFilter;
|
|
|
|
watcher.Filter = fileFilter;
|
|
|
|
//设置是否监听子目录
|
|
|
|
//设置是否监听子目录
|
|
|
|
watcher.IncludeSubdirectories = true;
|
|
|
|
// watcher.IncludeSubdirectories = false;
|
|
|
|
//设置是否启用监听
|
|
|
|
//设置是否启用监听
|
|
|
|
// watcher.EnableRaisingEvents = false;
|
|
|
|
watcher.EnableRaisingEvents = false;
|
|
|
|
watcher.EndInit();
|
|
|
|
watcher.EndInit();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -185,6 +224,7 @@ namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
timer1.Start();
|
|
|
|
timer1.Start();
|
|
|
|
timer1.Tick += timer1_Tick;
|
|
|
|
timer1.Tick += timer1_Tick;
|
|
|
|
IsIndeterminate = true;
|
|
|
|
IsIndeterminate = true;
|
|
|
|
|
|
|
|
_websocketClient.SendMes(JsonSerializer.Serialize(new CSUserSubscribeMessage { type = CSMessage.subscribe }));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Stop()
|
|
|
|
private void Stop()
|
|
|
@ -192,6 +232,8 @@ namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
WatchStartOrSopt(false);
|
|
|
|
WatchStartOrSopt(false);
|
|
|
|
timer1.Stop();
|
|
|
|
timer1.Stop();
|
|
|
|
IsIndeterminate = false;
|
|
|
|
IsIndeterminate = false;
|
|
|
|
|
|
|
|
_websocketClient.SendMes(JsonSerializer.Serialize(new CSUserSubscribeMessage { type = CSMessage.unsubscribe }));
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public DelegateCommand FilePathSaveCommand => new(() =>
|
|
|
|
public DelegateCommand FilePathSaveCommand => new(() =>
|
|
|
@ -254,14 +296,19 @@ namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
DateTime lastRead = DateTime.MinValue;
|
|
|
|
private void Watcher_Changed(object sender, System.IO.FileSystemEventArgs e)
|
|
|
|
private void Watcher_Changed(object sender, System.IO.FileSystemEventArgs e)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Application.Current.Dispatcher.BeginInvoke(new Action(() => {
|
|
|
|
// DateTime dt = DateTime.Now;
|
|
|
|
|
|
|
|
// string tmp = dt.Hour.ToString() + "时" + dt.Minute.ToString() + "分" + dt.Second.ToString() + "秒" + dt.Millisecond.ToString() + "毫秒,目录发生变化\r\n";
|
|
|
|
DateTime dt = DateTime.Now;
|
|
|
|
// watcher.EnableRaisingEvents = false;
|
|
|
|
string tmp = dt.Hour.ToString() + "时" + dt.Minute.ToString() + "分" + dt.Second.ToString() + "秒" + dt.Millisecond.ToString() + "毫秒,目录发生变化\r\n";
|
|
|
|
DateTime lastWriteTime = File.GetLastWriteTime(e.FullPath);
|
|
|
|
|
|
|
|
if (lastWriteTime != lastRead)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
lastRead = lastWriteTime;
|
|
|
|
string lastLine = File.ReadAllLines(e.FullPath).Last();
|
|
|
|
string lastLine = File.ReadAllLines(e.FullPath).Last();
|
|
|
|
|
|
|
|
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
|
|
|
|
|
|
|
|
{
|
|
|
|
DataList.Add(new WatcherFileModel
|
|
|
|
DataList.Add(new WatcherFileModel
|
|
|
|
{
|
|
|
|
{
|
|
|
|
CreateTime = DateTime.Now.ToString(),
|
|
|
|
CreateTime = DateTime.Now.ToString(),
|
|
|
@ -272,6 +319,7 @@ namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
IsSend = false
|
|
|
|
IsSend = false
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}));
|
|
|
|
CSDevicePublish cSDevicePublish = new CSDevicePublish()
|
|
|
|
CSDevicePublish cSDevicePublish = new CSDevicePublish()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
type = CSMessage.publish,
|
|
|
|
type = CSMessage.publish,
|
|
|
@ -279,7 +327,7 @@ namespace Txgy.FilesWatcher.ViewModels
|
|
|
|
};
|
|
|
|
};
|
|
|
|
string jsonStr = JsonSerializer.Serialize(cSDevicePublish);
|
|
|
|
string jsonStr = JsonSerializer.Serialize(cSDevicePublish);
|
|
|
|
_websocketClient.SendMes(jsonStr);
|
|
|
|
_websocketClient.SendMes(jsonStr);
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Watcher_Renamed(object sender, RenamedEventArgs e)
|
|
|
|
private void Watcher_Renamed(object sender, RenamedEventArgs e)
|
|
|
|