gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:28:22 25 4
gpt4 key购买 nike

在 Node 文档中,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$

这里close还有别的意思吗?

最佳答案

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

关于Node.js 服务器 'close' 事件似乎没有触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18692536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com