-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
106 lines (92 loc) · 2.5 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
var shoe = require('shoe');
var http = require('http');
var ecstatic = require('ecstatic');
var duplexEmitter = require('duplex-emitter');
var server = http.createServer(ecstatic(__dirname + '/static/')).listen(8080);
console.log('Listening on 8080: http://localhost:8080/index.html');
var _servers = [
{
serverId:'server0',
serverName:'server0',
serverStatus:'running',
cpuUsage:60,
memTotal:1024,
memUsed:256
},
{
serverId:'server1',
serverName:'server1',
serverStatus:'running',
cpuUsage:25,
memTotal:1024,
memUsed:512
},
{
serverId:'server2',
serverName:'server2',
serverStatus:'running',
cpuUsage:75,
memTotal:1024,
memUsed:128
},
{
serverId:'server3',
serverName:'server3',
serverStatus:'running',
cpuUsage:95,
memTotal:1024,
memUsed:1024
}
];
function getServerIndexForServerId(serverId) {
for(i = 0; i < _servers.length; i++) {
if(_servers[i].serverId === serverId) {
return i;
}
}
throw new Error('Unknown serverId: ' + serverId);
}
function getServerById(serverId) {
for(i = 0; i < _servers.length; i++) {
if(_servers[i].serverId === serverId) {
return _servers[i];
}
}
throw new Error('Unknown serverId: ' + serverId);
}
var sock = shoe(function (stream) {
var client = duplexEmitter(stream);
setInterval(function () {
client.emit('server-list', _servers);
}, 1000);
client.on('destroy-server', function (serverId) {
var index = getServerIndexForServerId(serverId);
var server = _servers[index];
server.serverStatus = 'destroying.';
var count = 8;
var iv = setInterval(function () {
if(count === 0) {
_servers.splice(index, 1);
clearInterval(iv);
} else {
server.serverStatus += '.'
count--;
}
}, 1000);
});
client.on('restart-server', function (serverId) {
var server = getServerById(serverId);
server.serverStatus = 'restarting.';
var count = 4;
var iv = setInterval(function () {
if(count === 0) {
server.serverStatus = 'running';
clearInterval(iv);
} else {
server.serverStatus += '.'
count--;
}
}, 1000);
});
});
sock.install(server, '/serverUsage');