How to know when node.js express server is up and ready to use

The Express app.listen function does support a callback. It maps the arguments that you pass in to the http.listen call.

app.listen = function(){
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};

So you can just call: app.listen(port, callback);

Or you could use http.listen directly.

var app = require('express')(),
    server = require('http').createServer(app);

server.listen(80, function() {
    console.log('ready to go!');
});

You can use the http.listen method which has a callback function that triggers once the server is ready:

http.createServer(app).listen(app.get('port'), function () {
    console.log('Printed when ready!!!');
});

See the official reference at Node.js:

http://nodejs.org/api/all.html#all_server_listen_port_hostname_backlog_callback

http://nodejs.org/api/all.html#all_server_listen_path_callback_1

http://nodejs.org/api/all.html#all_server_listen_handle_callback_1