What happens when you try to shut down an Express.js server while a user is connected to it?
var app = require('express')();
app.get('/', function( req, res ){
// respond after 10s
setTimeout( function(){
res.send( 'all done!' );
}, 10000 );
});
app.listen( 5000 );
This is a simple express server that waits ten seconds before sending a response to a user.
Let’s find out what happens when I connect to it and shut the server down before it responds to me.

That could have been a visitor trying to create an account or a user uploading a file, and you just rudely interrupted them. Very uncool.
var app = require('express')(),
http_instance;
app.get('/', function( req, res ){
setTimeout( function(){
res.send( 'all done!' );
}, 10000 );
});
// when shutdown signal is received, do graceful shutdown
process.on( 'SIGINT', function(){
http_instance.close( function(){
console.log( 'gracefully shutting down :)' );
process.exit();
});
});
http_instance = app.listen( 5000 );
Express.js listen method returns an instance of the native Node.js http module. The http module has a close method which stops it from receiving new connections but waits til existing connections are served before shutting down.
With a few more lines of code, you too can make your Express.js server shut down gracefully 🙂