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 previousport
. By allowing a constrained search, assuming no lowerports
within a specified range have freed up in the meantime, the likelihood of listening on the sameport
is increased. A server can typically restart and bind to the sameport
faster than binding to a newport
and re-registering with a microservice registry, thus minimizing possible service interruption and downtime.
Examples
var proc = require( 'process' );
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!' );
proc.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 );