INNER CODE UNIT · TypeScript
gracefulClose
yagop/node-telegram-bot-api · src/node/server.ts:92
export function gracefulClose(
server: http.Server,
timeoutMs: number
): ReturnType<typeof setTimeout> {
server.close(); // stop accepting; resolves once existing connections end
server.closeIdleConnections?.(); // drop idle keep-alive sockets now
const forceTimer = setTimeout(() => server.closeAllConnections?.(), timeoutMs);
forceTimer.unref?.(); // don't let the timer itself hold the loop open
return forceTimer;
}
/**
* Managed webhook runner: create a `node:http` webhook server, start listening,
* and resolve when it shuts down. Once listening, installs `SIGINT`/`SIGTERM`
* handlers that close the server for a graceful exit (cleaned up in a `finally`),
* mirroring `run()` for long polling. Rejects if the server fails to start (e.g.
* the port is in use).
*