首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

HTML5-WebSocket兑现对服务器CPU实时监控

2012-12-29 
HTML5-WebSocket实现对服务器CPU实时监控由于WebSocket允许保持长连接,因此当建立连接后服务器可以主动地

HTML5-WebSocket实现对服务器CPU实时监控

由于WebSocket允许保持长连接,因此当建立连接后服务器可以主动地向Client发送相关信息.下面通过服务端获取当前CPU的使用情况主动发送给网页,让网页实时显示CPU使用情况的曲线图.该事例的主要功能是包括服务端获取CPU使和情况和HTML5使用canvas进行曲线图绘制.

应用效果

HTML5-WebSocket兑现对服务器CPU实时监控

实现效果主要是模仿windows的任务管理器,显示每个核的工作情况.

C#获取CPU使用情况

可能通过PerformanceCounter来获取具本CPU线程的使用情况,不过在构建PerformanceCounter前先获取到CPU对应的线程数量.获取这个数量可以通过Environment.ProcessorCount属性获取,然后遍历构建每个PerformanceCounter

123456789101112131415161718192021222324252627282930313233343536373839404142434445class Program : WebSocketJsonServer     {        staticvoid Main(string[] args)        {            TcpUtils.Setup("beetle");            Program server =new Program();            server.Open(8070);            Console.WriteLine("websocket start@8070");            ProcessorCounter counters =new ProcessorCounter();            counters.Open();            while(true)            {                ItemUsage[] items = counters.GetValues();                foreach(ItemUsage item initems)                 {                    Console.WriteLine("{0}:{1}%", item.Name, item.Percent);                }                JsonMessage message =new JsonMessage();                message.type ="cpu useage";                message.data = items;                foreach(TcpChannel channel inserver.Server.GetOnlines())                 {                    channel.Send(message);                }                System.Threading.Thread.Sleep(995);            }            System.Threading.Thread.Sleep(-1);        }        protectedoverride voidOnError(objectsender, ChannelErrorEventArgs e)         {            base.OnError(sender, e);            Console.WriteLine(e.Exception.Message);        }        protectedoverride voidOnConnected(objectsender, ChannelEventArgs e)         {            base.OnConnected(sender, e);            Console.WriteLine("{0} connected", e.Channel.EndPoint);        }        protectedoverride voidOnDisposed(objectsender, ChannelDisposedEventArgs e)         {            base.OnDisposed(sender, e);            Console.WriteLine("{0} disposed", e.Channel.EndPoint);                    }    }

每秒获取一次CPU的使用情况,并把信息以json的方式发送给当前所有在线的连接.

下载

完整代码:ProcessorsMonitor.rar (686.02 kb) 

演示地址:http://html5.ikende.com/ProcessorsMonitor.htm (浏览器使用chrome或IE10)

热点排行