Tools.
var Tools={
//소켓 전체를 받아서 방을 돌려준다.
getRoomBySocket:function(obj){
var sockId=io.sockets.manager.roomClients[obj.id];
var r= null;
for(var k in sockId){
if(!sockId.hasOwnProperty(k))
continue
r=k;
}
if(r!=null && typeof r !="undefined") r=r.split("/")[1];
else r=null;
console.log("[ function ] getRoomBySocket : ",r);
return r;
},
//객체를 소팅한다.
sorting: function(f, r, p){
var key = function (x) {return p ? p(x[f]) : x[f]};
return function (a,b) {
var A = key(a), B = key(b);
return ((A < B) ? -1 : (A > B) ? +1 : 0) * [-1,1][+!!r];
}
},
//CPU , MEMORY 정보를 알려준다.
updateServerState:function(callback){
var freemem=os.freemem();
var totalmem=os.totalmem();
var memUse=Math.round((totalmem-freemem)/totalmem*100);
var r=null;
os_util.cpuUsage(function(v){
cpuUse=Math.round(v*100);
r={cpu : cpuUse , mem : memUse};
callback(r);
});
}
};
/*
*사용법
* 소켓 가지고 그 소켓이 join된 방을 찾고 싶을 때. */
Tools.getRoomBySocket(socket);
/*
* 객체 소팅 */
var book=[ { "price" : "500",
"name" : "andromeda" },
{ "price" : "1500",
"name" : "thebook" }];
// '가격' 높은거에서 낮은거로 소팅
book.sort(Tools.sorting('price', true, parseInt));
// '책 제목'의 a-z까지 순서로 소팅
book.sort(Tools.sorting('name', false, function(a){
return a.toUpperCase()
}));
/*
* Server의 CPU, MEM 사용량 조사를 동기적으로 받아서 처리하고 싶을 때.
*/
Tools.updateServerState(function(r){
console.log("cpu : ",r.cpu," mem : ",r.mem);
})