mirror of
https://github.com/coder/code-server.git
synced 2026-05-05 12:05:18 +02:00
Add idle timeout (#7539)
This commit is contained in:
@@ -11,6 +11,7 @@ import { loadCustomStrings } from "./i18n"
|
||||
import { register } from "./routes"
|
||||
import { VSCodeModule } from "./routes/vscode"
|
||||
import { isDirectory, open } from "./util"
|
||||
import { wrapper } from "./wrapper"
|
||||
|
||||
/**
|
||||
* Return true if the user passed an extension-related VS Code flag.
|
||||
@@ -141,7 +142,7 @@ export const runCodeServer = async (
|
||||
const app = await createApp(args)
|
||||
const protocol = args.cert ? "https" : "http"
|
||||
const serverAddress = ensureAddress(app.server, protocol)
|
||||
const disposeRoutes = await register(app, args)
|
||||
const { disposeRoutes, heart } = await register(app, args)
|
||||
|
||||
logger.info(`Using config file ${args.config}`)
|
||||
logger.info(`${protocol.toUpperCase()} server listening on ${serverAddress.toString()}`)
|
||||
@@ -166,6 +167,27 @@ export const runCodeServer = async (
|
||||
logger.info(" - Not serving HTTPS")
|
||||
}
|
||||
|
||||
if (args["idle-timeout-seconds"]) {
|
||||
logger.info(` - Idle timeout set to ${args["idle-timeout-seconds"]} seconds`)
|
||||
|
||||
let idleShutdownTimer: NodeJS.Timeout | undefined
|
||||
const startIdleShutdownTimer = () => {
|
||||
idleShutdownTimer = setTimeout(() => {
|
||||
logger.warn(`Idle timeout of ${args["idle-timeout-seconds"]} seconds exceeded`)
|
||||
wrapper.exit(0)
|
||||
}, args["idle-timeout-seconds"]! * 1000)
|
||||
}
|
||||
|
||||
startIdleShutdownTimer()
|
||||
|
||||
heart.onChange((state) => {
|
||||
clearTimeout(idleShutdownTimer)
|
||||
if (state === "expired") {
|
||||
startIdleShutdownTimer()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (args["disable-proxy"]) {
|
||||
logger.info(" - Proxy disabled")
|
||||
} else if (args["proxy-domain"].length > 0) {
|
||||
|
||||
Reference in New Issue
Block a user