[tr][td]由于WebSocket允许保持长连接,因此当建立连接后服务器可以主动地向Client发送相关信息.下面通过服务端获取当前CPU的使用情况主动发送给网页,让网页实时显示CPU使用情况的曲线图.该事例的主要功能是包括服务端获取CPU使和情况和HTML5使用canvas进行曲线图绘制.
应用效果 图片:093443vhhf3m0x0mt07thf.jpg 实现效果主要是模仿windows的任务管理器,显示每个核的工作情况. C#获取CPU使用情况 可能通过PerformanceCounter来获取具本CPU线程的使用情况,不过在构建PerformanceCounter前先获取到CPU对应的线程数量.获取这个数量可以通过Environment.ProcessorCount属性获取,然后遍历构建每个PerformanceCounter [table] [tr] [td] 1 2 3 4 5 [/td] [td] int coreCount = Environment.ProcessorCount; for (int i = 0; i < coreCount; i++) { mCounters.Add(new PerformanceCounter("Processor", "% Processor Time", i.ToString())); } [/td][/tr][/table] 为了方便计数器的处理,简单地封装了一个基础类,完整代码如下:
这样一个用于统计CPU所有线程使用情况计数的类就完成了. 页面绘制处理 首先定义一些简单的处理结构
主要定义线程信息结构,默认初始化50个座标,当在接收服务线程使用情况的时候,构建一个点添加到数组件尾部同时把第一个移走.通过定时绘制这50个点的曲线这样一个动态的走势就可以完成了.
只需要通过定时器来不停地更新线程使用绘制即可.
服务端 对于服务端其实可以根据自己的需要来使用websocket协议实现,.net 4.5也提供相应的封装.而这里则使用了beetle对应websocket的扩展协议包,整体代码如下:
每秒获取一次CPU的使用情况,并把信息以json的方式发送给当前所有在线的连接. 下载 完整代码:ProcessorsMonitor.rar (686.02 kb) 演示地址:http://html5.ikende.com/ProcessorsMonitor.htm (浏览器使用chrome或IE10) via:http://www.cnblogs.com/smark/archive/2012/12/25/2833129.html [/td][/tr] |
|||||||||||