feature(server) port: 0 means any available

This commit is contained in:
coderaiser 2016-03-28 04:55:25 -04:00
parent dbf0b6bb05
commit 02a061ff11
2 changed files with 20 additions and 8 deletions

View file

@ -11,6 +11,7 @@
config = require(DIR_SERVER + 'config'),
prefixer = require(DIR_SERVER + 'prefixer'),
express = require('express'),
freeport = require('freeport'),
tryRequire = require('tryrequire'),
logger = tryRequire('morgan'),
io = require('socket.io');
@ -21,6 +22,7 @@
*/
module.exports = function(options) {
var server,
getPort, onError,
port = process.env.PORT || /* c9 */
process.env.VCAP_APP_PORT || /* cloudfoundry */
@ -44,15 +46,25 @@
})
}));
if (port < 1 || port > 65535)
exit('cloudcmd --port: %s', 'port number could be 1..65535');
if (port < 0 || port > 65535)
exit('cloudcmd --port: %s', 'port number could be 1..65535, 0 means any available port');
server.on('error', function(error) {
getPort = function(fn) {
port ? fn(null, port) : freeport(fn);
};
onError = function(error) {
exit('cloudcmd --port: %s', error.message);
};
getPort(function(error, port) {
if (error)
return onError(error);
server.listen(port, ip);
server.on('error', onError);
console.log('url: http://%s:%d', config('ip') || 'localhost', port);
});
server.listen(port, ip);
console.log('url: http://%s:%d', config('ip') || 'localhost', port);
};
})();

View file

@ -50,7 +50,6 @@
"docker": "npm-run-all docker:pull:node docker:build docker:push",
"docker:alpine": "npm-run-all docker:pull:alpine docker:build:alpine docker:tag:alpine docker:push:alpine docker:push:alpine:latest",
"docker:tag:alpine": "docker tag coderaiser/cloudcmd:`version`-alpine coderaiser/cloudcmd:latest-alpine",
"docker:pull:alpine": "docker pull mhart/alpine-node",
"docker:rm": "docker rmi coderaiser/cloudcmd:`version` || true",
"docker:rm:alpine": "docker rmi coderaiser/cloudcmd:`version`-alpine || true",
"coverage": "nyc npm test",
@ -74,6 +73,7 @@
"files-io": "~1.2.0",
"flop": "~1.4.0",
"format-io": "~0.9.6",
"freeport": "~1.0.5",
"http-auth": "~2.2.3",
"ishtar": "~1.3.0",
"jaguar": "~1.1.0",