我有一个使用连接在 node.js 中运行的简单服务器:
var server = require('connect').createServer(); //actions... server.listen(3000);
在我的代码中,我有实际的处理程序,但这是基本思想。我不断遇到的问题是
EADDRINUSE, Address already in use
我在之前崩溃或错误后再次运行我的应用程序时收到此错误。由于我没有打开终端的新实例,因此我使用ctr + z.
ctr + z
我相当肯定我所要做的就是关闭服务器或连接。我试着打电话没有运气server.close()。process.on('exit', ...);
server.close()
process.on('exit', ...);
process.on('exit', ..)如果进程崩溃或被杀死,则不会调用。它仅在事件循环结束时被调用,并且由于server.close() 某种 结束事件循环(它仍然必须在这里和那里等待当前正在运行的堆栈),所以将它放在退出事件中是没有意义的......
process.on('exit', ..)
崩溃时,执行process.on('uncaughtException', ..)和杀死执行process.on('SIGTERM', ..)
process.on('uncaughtException', ..)
process.on('SIGTERM', ..)
话虽如此,SIGTERM(默认终止信号)让应用程序清理,而 SIGKILL(立即终止)不会让应用程序做任何事情。