HTTP Server

HTTP server.

Usage

var httpServer = require( '@stdlib/net/http-server' );

httpServer( [options,] [ requestListener] )

Returns a function to create an HTTP server.

var createServer = httpServer();

To bind a request callback to a server, provide a requestListener.

function requestListener( request, response ) {
    console.log( request.url );
    response.end( 'OK' );
}

var createServer = httpServer( requestListener );

The function accepts the following options:

  • port: server port. Default: 0 (i.e., randomly assigned).
  • maxport: max server port when port hunting. Default: maxport=port.
  • hostname: server hostname.
  • address: server address. Default: 127.0.0.1.

To specify server options, provide an options object.

var opts = {
    'port': 7331,
    'address': '0.0.0.0'
};

var createServer = httpServer( opts );

To specify a range of permissible ports, set the maxport option.

var opts = {
    'maxport': 9999
};

var createServer = httpServer( opts );

When provided a maxport option, a created server will search for the first available port on which to listen, starting from port.

createServer( done )

Creates an HTTP server.

function done( error, server ) {
    if ( error ) {
        throw error;
    }
    console.log( 'Success!' );
    server.close();
}

var createServer = httpServer();

createServer( done );

Notes

  • Port hunting can be useful in a microservice deployment. When a port is randomly assigned (options.port=0), if a server fails and is restarted, the server is unlikely to bind to its previous port. By allowing a constrained search, assuming no lower ports within a specified range have freed up in the meantime, the likelihood of listening on the same port is increased. A server can typically restart and bind to the same port faster than binding to a new port and re-registering with a microservice registry, thus minimizing possible service interruption and downtime.

Examples

var http = require( 'http' );
var httpServer = require( '@stdlib/net/http-server' );

function done( error, server ) {
    if ( error ) {
        throw error;
    }
    http.get( 'http://127.0.0.1:7331/beep/boop', onResponse );
}

function onResponse() {
    console.log( 'Success!' );
    process.exit( 0 );
}

function onRequest( request, response ) {
    console.log( request.url );
    response.end( 'OK' );
}

// Specify server options...
var opts = {
    'port': 7331,
    'maxport': 9999,
    'hostname': 'localhost'
};

// Create a function for creating an HTTP server...
var createServer = httpServer( opts, onRequest );

// Create a server:
createServer( done );