http-graceful
Gracefully open and close a http server, its sockets and perhaps a database.
about
Creates a function start
that creates and opens a http server. Because start
is an AsyncEventEmitter, you can add hooks, e.g. to open a database, that execute before or after the http server is opened. Likewise, you can add hooks that execute before or after the server is closed - either with start.close()
or if the process receives a termination signal. Optionally, http-graceful
will also close open connections.
Note that if you don't call start
, it will start in the next tick. Say you have an app.js
, which exports start
, like so:
var app = var start = moduleexports = start // There's also a "before close" event, but// let's be safe and close the database // after all sockets have been closed.start
To start the server, the usual still works: node app.js
. But also, in some other file:
var start = // Bonus: you can override options // Without a callback argument, events are// synchronous (see `async-eventemitter`)start
If you call start
when the server has already started, your callback will be called immediately and no events will be emitted. Same goes for start.close()
.
See also the examples:
DEBUG=http-graceful node example/app.js
DEBUG=http-graceful node example/app-consumer.js
install
With npm do:
npm install http-graceful
license
MIT