Skip to content

Instantly share code, notes, and snippets.

@pineoc
Created February 1, 2016 08:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save pineoc/b1d9c31e5e0600d328fc to your computer and use it in GitHub Desktop.
Save pineoc/b1d9c31e5e0600d328fc to your computer and use it in GitHub Desktop.
make https server using expressjs v4
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('logstash_test:server');
var http = require('http');
var https = require('https');
var fs = require('fs');
/**
* Get port from environment and store in Express.
*/
var http_port = 3000;
var port = normalizePort(process.env.PORT || http_port);
app.set('port', port);
/**
* Create HTTP server.
*/
var http_server = http.createServer(app);
http_server.listen(port);
http_server.on('error', onError);
http_server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = http_server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
/*https server settings start*/
/*
* Create HTTPS options server.
* */
var options = {
key: fs.readFileSync(__dirname + '/../keyfiles/key.pem'),
cert: fs.readFileSync(__dirname + '/../keyfiles/cert.pem')
};
var app2 = require('../app');
var https_port = 443;
var port2 = normalizePort(process.env.PORT || https_port);
app2.set('port', port2);
var https_server = https.createServer(options, app2);
https_server.listen(port2);
//https server added
@jaiminpatel008
Copy link

I need to understand how to Switch case works for Port pipe error. Suppose I set the port as '5J00k" it gets into the 'EADDRINUSE'. It always goes to the ADDRESS IN USE case although it is not in use.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment