(signal: NodeJS.Signals)
| 327 | let stopping = false; |
| 328 | |
| 329 | function sigHandler(signal: NodeJS.Signals) { |
| 330 | if (stopping) { |
| 331 | logger.info(`Another ${signal} detected, forcing shutdown...`); |
| 332 | process.exit(); |
| 333 | } |
| 334 | stopping = true; |
| 335 | logger.info(`${signal} detected, finishing jobs and shutting down...`); |
| 336 | httpServer.removeAllListeners("upgrade"); |
| 337 | const closeResponse = Buffer.concat([Buffer.from([Rclose])]); |
| 338 | for (const client of wss.clients) { |
| 339 | client.send(closeResponse); |
| 340 | } |
| 341 | wss.close((e) => { |
| 342 | if (e) { |
| 343 | error(e); |
| 344 | process.exit(1); |
| 345 | } |
| 346 | logger.info("Stopped WS server"); |
| 347 | if (jobs.size > 0) { |
| 348 | jobs.delListen((size) => { |
| 349 | if (size > 0) return; |
| 350 | logger.info("All jobs finished"); |
| 351 | stopHTTPServer(); |
| 352 | }); |
| 353 | } else { |
| 354 | stopHTTPServer(); |
| 355 | } |
| 356 | }); |
| 357 | } |
| 358 | |
| 359 | process.on("SIGINT", (s) => sigHandler(s)); |
| 360 | process.on("SIGTERM", (s) => sigHandler(s)); |
no test coverage detected