admin管理员组

文章数量:1302329

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 plicated, 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 plicated situations.

However, referring .html appears that an event 'open' does not exist.

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

Thanks.

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 plicated, 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 plicated situations.

However, referring http://nodejs/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.

Share Improve this question edited May 23, 2017 at 12:09 CommunityBot 11 silver badge asked Mar 11, 2014 at 1:19 user1028880user1028880 8
  • What are you expecting .open() to do? – Sterling Archer Commented Mar 11, 2014 at 1:24
  • Well, whatever. It's so mon to have open event for socket things, and I don't know why node basic server does not have this. – user1028880 Commented Mar 11, 2014 at 1:29
  • I have no idea what you just said. "Whatever"?? You aren't even saying what you think open should do for a node server – Sterling Archer Commented Mar 11, 2014 at 1:31
  • Oh, you have suggested open method instead of on('open'), I have tried, but it says: Object #<Server> has no method 'open', and actually, there's no such a method in the documentation. – user1028880 Commented Mar 11, 2014 at 1:36
  • Sorry, I mistyped. What are you expecting .on("open" to do – Sterling Archer Commented Mar 11, 2014 at 1:37
 |  Show 3 more ments

1 Answer 1

Reset to default 9

I think you are looking for the listening event:

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

本文标签: javascriptnode http server listen and on(39open39) eventStack Overflow