节点HTTP服务器监听并打开('open')事件

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

本文关键字:open 事件 服务器 HTTP 监听 节点      更新时间:2023-09-26

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

节点httpServer EADDRINUSE和下一个端口

目前,我做

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事件'open'不存在。

有相应的事件吗?还是不能这样写?

谢谢。

我想你正在寻找聆听事件:

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