usingDevExpress.XtraBars.Ribbon;usingFleck;usingIMS.DBHelper;usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Linq;usingSystem.Windows.Forms;usingWHC.Framework.Commons;usingRfidPositioning.Common;usingIMS.BaseFramework;usingSystem.Threading;namespaceIMS.WfmClient
{public partial classWebMonitor : RibbonForm
{static System.Timers.Timer _refreshDataTimer = newSystem.Timers.Timer();static List _connections = new List();
DataPackage _dataPackage= newDataPackage();
WebSocketServer _wsServer= new WebSocketServer("ws://0.0.0.0:7181");publicWebMonitor()
{
InitializeComponent();//启动线程开始从数据库获取页面所需的数据
Thread th = newThread(GetDataForChart);
th.IsBackground= true;
th.Start();//设置监控界面对应的网页
string appPath =AppDomain.CurrentDomain.BaseDirectory;string chartsPath = "file:///" + appPath + "Resources/eCharts/sample.html";
webBrowser1.Navigate(newUri(chartsPath));//启动webSocket侦听服务
_wsServer.Start(item =>{//与客户端建立连接后触发
item.OnOpen = () =>{
_connections.Add(item);//首次建立连接后立刻发送一次数据,之后由定时器来刷新数据
string jsonData =_dataPackage.ToJson();
_connections.ToList().ForEach(s=>s.Send(jsonData));
};//收到客户端发来的消息后触发
item.OnMessage = message =>{int msg = 0;int.TryParse(message, outmsg);
ClientMessageHandler(msg);
};//客户端关闭连接后触发
item.OnClose = () =>{
_connections.Remove(item);
};
});
}private void FrmIndex_Load(objectsender, EventArgs e)
{//启动定时器
_refreshDataTimer.Enabled = true;
_refreshDataTimer.Interval= 5 * 60 * 1000;
_refreshDataTimer.Elapsed+= newSystem.Timers.ElapsedEventHandler(timersTimer_Elapsed);
_refreshDataTimer.Start();
}private void timersTimer_Elapsed(objectsender, System.Timers.ElapsedEventArgs e)
{
GetDataForChart();string jsonData =_dataPackage.ToJson();
_connections.ToList().ForEach(s=>s.Send(jsonData));
}private void ClientMessageHandler(intmsg)
{if (msg >= 500)
{
SysConfig.FloorNumber= (msg % 100).ToString();this.Invoke(new Action(() =>{
ChildWinManagement.LoadMdiForm(SysConfig.mainform,typeof(frmTracePlayback));
}));
}else if (msg >= 400)
{
SysConfig.FloorNumber= (msg / 10 % 100).ToString();if (msg % 10 == 1)
{
SysConfig.WarningType= "正常";
}if (msg % 10 == 2)
{
SysConfig.WarningType= "缺失报警";
}this.Invoke(new Action(() =>{
ChildWinManagement.LoadMdiForm(SysConfig.main