节点http服务器侦听和打开('打开')事件

时间:2014-03-11 01:19:01

标签: javascript node.js

这个问题与我之前的问题有关:

node httpServer EADDRINUSE and next port

目前,我做

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);
    }
  });

然而,当事情变得复杂时,这个代码结构难以管理,我更愿意写如下:

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);

这对我来说更直接,在复杂情况下实际上更容易处理。

但是,参考 http://nodejs.org/api/http.html似乎不存在“打开”事件。

是否有相应的事件,或者不可能这样写?

感谢。

1 个答案:

答案 0 :(得分:5)

我认为您正在寻找listening事件:

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