@@ -14,7 +14,7 @@ import session from "express-session";
1414import helmet from "helmet" ;
1515import morgan from "morgan" ;
1616import config from "./config/config.service" ;
17- import { connectDatabase } from "./lib/database" ;
17+ import { connectDatabase , disconnectDatabase } from "./lib/database" ;
1818import logger , { httpLogger } from "./lib/logger.service" ;
1919import { useSocketIo } from "./lib/realtime.server" ;
2020import redisStore from "./lib/session.store" ;
@@ -27,17 +27,17 @@ import YAML from "yaml";
2727import { convertDocumentationToYaml } from "./openapi/swagger-doc-generator" ;
2828import globalErrorHandler from "./utils/globalErrorHandler" ;
2929
30- const boostrapServer = async ( ) => {
31- await connectDatabase ( ) ;
32-
33- const app = express ( ) ;
30+ const app = express ( ) ;
3431
3532 app . set ( "trust proxy" , true ) ;
3633
3734 const server = createServer ( app ) ;
3835
3936 const io = useSocketIo ( server ) ;
4037
38+ const boostrapServer = async ( ) => {
39+ await connectDatabase ( ) ;
40+
4141 app . use ( ( req , _ , next ) => {
4242 req . io = io ;
4343 next ( ) ;
@@ -116,3 +116,17 @@ boostrapServer().catch((err) => {
116116 logger . error ( err . message ) ;
117117 process . exit ( 1 ) ;
118118} ) ;
119+
120+ for ( const signal of [ "SIGINT" , "SIGTERM" ] ) {
121+ process . on ( signal , async ( ) => {
122+ await disconnectDatabase ( ) ;
123+ logger . info ( "Server is shutting down..." ) ;
124+ io . disconnectSockets ( true ) ;
125+ logger . info ( "Server disconnected from sockets" ) ;
126+ server . close ( ) ;
127+ logger . info ( "Server closed" ) ;
128+ process . exit ( 0 ) ;
129+ } ) ;
130+ }
131+
132+
0 commit comments