WebSocket入门教程(四)-- WebSocket实例:实时获取服务器内存使用情况(优化一)
websocket,优化2016-06-09
转载请标明出处:http://blog.csdn.net/u010136741/article/details/51590619, 本文出自: 柳木木_kylin
//send memory info per second
var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({port:8181});
var spawn = require('child_process').spawn;
var mem = {};
var clientMemUpdater = undefined;
function updateMemInfo(){
var free = spawn('free',['-k']);
free.stdout.on('data',function(data){
var strdata = ""+data;
console.log(strdata);
//正则匹配,获取数据
var re = /Mem: *(\d*) *(\d*) *(\d*) *(\d*) *(\d*) *(\d*)/;
var result = strdata.match(re);
if(result.length>0){
mem["total"] = parseInt(result[1]);
mem["used"] = parseInt(result[2]);
mem["free"] = parseInt(result[3]);
//mem["shared"] = parseInt(result[4]);
mem["buffers"] = parseInt(result[5]);
mem["cached"] = parseInt(result[6]);
}
});
}
updateMemInfo();
wss.on('connection',function(ws){
var clientMemSend;
var sendMemUpdates = function(ws){
if(ws.readyState == 1){
ws.send(JSON.stringify(mem));
}
}
clientMemSend = setInterval(function(){
if(typeof clientMemUpdater == 'undefined'){
clientMemUpdater = setInterval(updateMemInfo,1000);
}
sendMemUpdates(ws);
},1000);
sendMemUpdates(ws);
if(typeof clientMemUpdater == 'undefined'){
clientMemUpdater = setInterval(updateMemInfo,1000);
}
ws.on("close",function(){
if(typeof clientMemSend != 'undefined'){
clearInterval(clientMemSend);
}
if(typeof clientMemUpdater !='undefined'){
clearInterval(clientMemUpdater);
clientMemUpdater = undefined;
}
});
});