Mặc định, các HTTP adapter của NestJS sẽ chờ cho đến khi response hoàn tất mới đóng application. Nhưng đôi khi, hành vi này không mong muốn, hoặc gây bất ngờ. Có thể có những request dùng header Connection: Keep-Alive tồn tại trong thời gian dài.
Với những trường hợp mà bạn luôn muốn application thoát ngay mà không chờ request kết thúc, bạn có thể bật tùy chọn forceCloseConnections khi tạo NestJS application.
Mẹo Đa số người dùng sẽ không cần bật tùy chọn này. Nhưng dấu hiệu cho thấy bạn cần nó là application không thoát đúng như bạn mong đợi. Thường gặp khi app.enableShutdownHooks() được bật và bạn nhận thấy application không restart/exit được. Nhiều khả năng nhất là khi chạy NestJS application ở môi trường development với --watch.
Ghi chú người dịch Về bản chất, đây là socket TCP đang mở (keep-alive) mà Node.js server mặc định sẽ chờ cho tự đóng trước khi tắt hẳn — giống hệt hành vi server.close() của module http gốc trong Node, Nest không tự thêm gì đặc biệt ở đây, chỉ expose lại option để bạn ép đóng ngay (tương tự việc gọi server.closeAllConnections()).
Cách dùng
Trong file main.ts, bật tùy chọn này khi tạo NestJS application:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module.js';
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
forceCloseConnections: true,
});
await app.listen(process.env.PORT ?? 3000);
}
await bootstrap();