user1028880
user1028880

Reputation:

node http server listen and on('open') event

This question is related to my previous one:

node httpServer EADDRINUSE and next port

Currently, I do

var port = 8000;
HTTPserver
  .listen(port, function()
  {
    console.log('HTTP listening:' + port);
  })
  .on('error', function(err)
  {
    if (err.code === 'EADDRINUSE')
    {
      // port is currently in use
      console.log('server Open error:' + port);

      port++;
      HTTPserver
        .listen(port);
    }
  });

However, this code structure is hard to manage when things get complicated, and I perfer to write as follows:

var port = 8000;
HTTPserver
  .on('open', function()
  {
    console.log('HTTP listening:' + port);
  })
  .on('error', function(err)
  {
    if (err.code === 'EADDRINUSE')
    {
      // port is currently in use
      console.log('server Open error:' + port);

      port++;
      HTTPserver.listen(port);
    }
  });

HTTPserver.listen(port);

This appears more straightforwad to me, and actually easier to handle in complicated situations.

However, referring http://nodejs.org/api/http.html appears that an event 'open' does not exist.

Is there any corresponding event or it's not possible to write like this?

Thanks.

Upvotes: 6

Views: 5482

Answers (1)

mutil
mutil

Reputation: 3305

I think you are looking for the listening event:

const port = 8000;
HTTPserver.on('listening', function() {
  console.log('HTTP listening:' + port);
})

Upvotes: 9

Related Questions