/
gateway.js
executable file
·46 lines (41 loc) · 1.21 KB
/
gateway.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
#!/usr/bin/env node
var argv = require('optimist')
.alias('p', 'port')
.alias('s', 'service')
.alias('t', 'threads')
.alias('v', 'version')
.default('port', 8080)
.default('service', 'app')
.default('threads', require('os').cpus().length)
.default('sockets', 25000)
.argv
, amino = require('amino')
.init({
redis: argv.redis,
request: argv.request,
service: false
})
, createGateway = require('../')
, cluster = require('cluster')
if (argv.version) {
console.log(require(require('path').join(__dirname, '../package.json')).version);
process.exit();
}
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < argv.threads; i++) {
cluster.fork();
}
cluster.on('exit', function (worker, code, signal) {
var exitCode = worker.process.exitCode;
console.log('worker ' + worker.pid + ' died (' + exitCode + '). restarting...');
cluster.fork();
});
console.log(argv.service + ' gateway listening (' + (argv.threads > 1 ? argv.threads + ' threads' : 'single thread') + ') on port ' + argv.port + '...');
} else {
createGateway(argv)
.on('error', function (err) {
console.error(err, 'server error');
})
.listen(argv.port);
}