What is killable?
The killable npm package provides a simple way to make server-like objects (such as those created by `http.createServer`) 'killable'. This means you can easily terminate all active connections with a single method call, allowing for graceful shutdowns of servers. This is particularly useful in scenarios where you need to cleanly stop a server during development, testing, or in production environments for updates or maintenance.
What are killable's main functionalities?
Making a server killable
This feature allows you to wrap an existing server object, making it 'killable'. After calling `killable(server)`, you can call `server.kill()` to terminate all active connections and stop the server.
const killable = require('killable');
const http = require('http');
const server = http.createServer((req, res) => {
res.end('Hello World!');
});
killable(server);
server.listen(3000, () => console.log('Server running on port 3000'));
// Later, to kill the server and all active connections:
server.kill();
Other packages similar to killable
stoppable
Similar to killable, stoppable also enhances server objects to allow for graceful shutdowns by terminating active connections. However, stoppable provides more fine-grained control over the shutdown process, including the ability to set a timeout for how long to wait for active connections to close before forcibly shutting down.
http-terminator
http-terminator is designed to gracefully terminate HTTP servers by closing existing connections and refusing new ones. It offers a slightly different API compared to killable, focusing on providing a comprehensive solution for shutting down HTTP and HTTPS servers, including support for websockets.
killable
Keeps track of a server's open sockets so they can be destroyed at a
moment's notice. This way, the server connection can be killed very
fast.
Installation
npm install killable
Example usage
Using express:
('server' in the example is just an http.server
, so other frameworks
or pure Node should work just as well.)
var killable = require('killable');
var app = require('express')();
var server;
app.route('/', function (req, res, next) {
res.send('Server is going down NOW!');
server.kill(function () {
});
});
var server = app.listen(8080);
killable(server);
API
The killable
module is callable. When you call it on a Node
http.Server
object, it will add a server.kill()
method on it. It
returns the server object.
server.kill([callback])
closes all open sockets and calls
server.close()
, to which the callback
is passed on.
Inspired by: http://stackoverflow.com/a/14636625
License
ISC