由于活动连接,Node.js server.close()不会关闭

时间:2014-02-01 03:33:20

标签: node.js

我正在尝试在应用程序关闭之前显示一些信息。因此,我创建了一个事件,当服务器收到SIGINT时将触发该事件。如果没有连接,此代码将起作用。但是,如果存在连接localhost:4040,则服务器将永远不会关闭,因为服务器认为仍然存在活动连接(连接计数将为1)。我不明白的部分是Node.js在请求完成后仍然认为存在活动连接的原因。是否有任何方法可以终止连接或我当前关闭请求的方式是错误的?

以下是我要完成的代码:

var http = require('http')

var server = http.createServer(function(req, res){
  res.end('test');    
}).listen(4040);

process.on( 'SIGINT', function(){
  server.getConnections(function(err, count){
    console.log('connection:' + count);
  })

  server.close(function(){
    process.exit();
  });
})

我有一些想法:

  1. 保存我收到的插座副本并单独关闭
  2. 希望有人能给我一些解决这个问题的建议。谢谢

1 个答案:

答案 0 :(得分:0)

  1. 存储您拥有的所有套接字并手动关闭它们
  2. 使用process.exit()并销毁整个过程
  3. 使用域名并使用可怕的db.dispose()