Search code examples
httpnode.jsexit

Graceful shutdown of a node.JS HTTP server


Here is a simple webserver I am working on

var server = require("http").createServer(function(req,resp) {
    resp.writeHead(200,{"Content-Type":"text/plain"})
    resp.write("hi")
    resp.end()
    server.close()
})
server.listen(80, 'localhost')
// The shortest webserver you ever did see! Thanks to Node.JS :)

Works great except for keep-alive. When the first request comes in, server.close gets called. But the process does not end. Actually the TCP connection is still open which allows another request to come through which is what I am trying to avoid.

How can I close existing keep-alive connections?


Solution

  • You can call request.connection.destroy() in the response callback. That will close the request connection.

    It will also end your process since there is nothing left to do, the end result is the same as calling process.exit() right there.