Skip to content

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();

基于 NestJS 官方文档翻译