From 3aa112e373167d50c50a7c3f17d33d08de85ef50 Mon Sep 17 00:00:00 2001 From: whyour Date: Sat, 8 Jul 2023 00:27:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20node=20=E8=BF=9B=E7=A8=8B?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/loaders/server.ts | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/back/loaders/server.ts b/back/loaders/server.ts index 6f92b519..19123edf 100644 --- a/back/loaders/server.ts +++ b/back/loaders/server.ts @@ -5,18 +5,34 @@ import Sock from './sock'; export default async ({ server }: { server: Server }) => { await Sock({ server }); Logger.info('✌️ Sock loaded'); + let exitTime = 0; + let timer: NodeJS.Timeout; - process.on('SIGINT', () => { - Logger.info('✌️ Server need close'); - server.close(() => { - setTimeout(() => { - process.exit(); - }, 10000); - }); - - setTimeout(() => { - console.log('Forcing server close !!!'); + process.on('SIGINT', (singal) => { + Logger.warn(`Server need close, singal ${singal}`); + exitTime++; + if (exitTime >= 3) { + Logger.warn('Forcing server close'); + clearTimeout(timer); process.exit(1); - }, 15000); + } + server.close(() => { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(() => { + process.exit(); + }, 15000); + }); + }); + + process.on('uncaughtException', (error) => { + Logger.error('Uncaught exception:', error); + process.exit(1); + }); + + process.on('unhandledRejection', (reason, promise) => { + Logger.error('Unhandled rejection:', reason); + process.exit(1); }); };