读书人

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

发布时间: 2012-12-29 10:28:09 作者: rapoo

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)

读书人网 >Web前端

热点推荐