当前位置 : 主页 > 网页制作 > Nodejs >

Node.js服务器’close’事件似乎没有触发

来源:互联网 收集:自由互联 发布时间:2021-06-16
在Node docs中, http servers appear to have a close event: Event: ‘close’ function () { } Emitted when the server closes. 但我无法弄清楚如何触发它: // server.jsvar http = require('http');var server = http.createServer()
在Node docs中, http servers appear to have a close event:

Event: ‘close’

function () { }

Emitted when the server closes.

但我无法弄清楚如何触发它:

// server.js

var http = require('http');
var server = http.createServer();
server.on('close', function() {
  console.log(' Stopping ...');
});
server.listen(8000);

我期待消息“停止…”

$node server.js
^C Stopping ...
$

但相反,什么都没有

$node server.js
^C$

关闭是否意味着其他什么?

使用Ctrl C杀死服务器不允许服务器自行关闭;你必须自己做.像这样的东西应该成功(在类UNIX系统上):

var http = require('http');
var server = http.createServer();
server.on('close', function() {
  console.log(' Stopping ...');
});

process.on('SIGINT', function() {
  server.close();
});

server.listen(8000);

一旦HTTP服务器关闭并且Node意识到没有可以挂起的异步操作,它将自动停止该过程.如果事件循环中有其他内容(计时器等),并且您希望在服务器关闭后强制事件循环停止,则close将进行回调:

process.on('SIGINT', function() {
  server.close(function() {
    process.exit(0);
  });
});
网友评论