Keep-Alive 连接
默认情况下,NestJS 的 HTTP 适配器会等到响应真正结束之后,才关闭应用。但有时这种行为并不符合预期,或者会让人感到困惑。例如,有些请求会使用 Connection: Keep-Alive 头,并保持较长时间不断开。
在这类场景下,如果你希望应用在退出时不要等待现有请求自然结束,可以在创建 NestJS 应用时启用 forceCloseConnections 选项。
提示
大多数用户并不需要开启这个选项。但如果你的应用在你预期应该退出时却一直没有退出,通常就说明你可能需要它。一个典型现象是:启用了 app.enableShutdownHooks() 后,应用在开发模式下配合 --watch 运行时,无法正常重启 / 退出。
用法
在 main.ts 中创建应用时启用该选项:
typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
forceCloseConnections: true,
});
await app.listen(process.env.PORT ?? 3000);
}
bootstrap();