From f57d1061a5c71335ded6218c724c2ab2aa1be759 Mon Sep 17 00:00:00 2001 From: Martin Vanco Date: Wed, 5 Feb 2025 12:00:36 +0100 Subject: [PATCH] feat: configure node http server timeouts --- src/server/main.ts | 25 +++++++++++++++++++++++++ src/types/server.ts | 30 ++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/src/server/main.ts b/src/server/main.ts index 8afc49c..11f237c 100644 --- a/src/server/main.ts +++ b/src/server/main.ts @@ -294,6 +294,31 @@ export class Server { * Set the HTTP server instance used to listen for requests. */ setNodeServer(server: HttpServer | HttpsServer) { + if (this.#config.nodeHttpServer) { + const { + keepAliveTimeout, + headersTimeout, + requestTimeout, + timeout, + } = this.#config.nodeHttpServer + + if (typeof keepAliveTimeout === 'number') { + server.keepAliveTimeout = keepAliveTimeout + } + + if (typeof headersTimeout === 'number') { + server.headersTimeout = headersTimeout + } + + if (typeof requestTimeout === 'number') { + server.requestTimeout = requestTimeout + } + + if (typeof timeout === 'number') { + server.timeout = timeout + } + } + this.#nodeHttpServer = server } diff --git a/src/types/server.ts b/src/types/server.ts index ad036f0..87e2cbe 100644 --- a/src/types/server.ts +++ b/src/types/server.ts @@ -96,4 +96,34 @@ export type ServerConfig = RequestConfig & * Config for query string parser */ qs: QSParserConfig + + /** + * Node.js HTTP server options + */ + nodeHttpServer?: { + /** + * The number of milliseconds of inactivity a server needs to wait for additional incoming data, after + * it has finished writing the last response, before a socket will be destroyed + * @default 5000 + */ + keepAliveTimeout?: number + + /** + * Limit the amount of time the parser will wait to receive the complete HTTP headers + * @default 60000 + */ + headersTimeout?: number + + /** + * Sets the timeout value in milliseconds for receiving the entire request from the client + * @default 300000 + */ + requestTimeout?: number + + /** + * The number of milliseconds of inactivity before a socket is presumed to have timed out + * @default 0 + */ + timeout?: number + } }