From ffa2794eb6c718b15e0d01914d94ed03569f15fb Mon Sep 17 00:00:00 2001 From: purocean Date: Fri, 24 Jan 2025 01:59:05 +0800 Subject: [PATCH] fix: improve process cleanup on socket disconnect and exit --- src/main/server/index.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/server/index.ts b/src/main/server/index.ts index e7f40212..bacc7436 100644 --- a/src/main/server/index.ts +++ b/src/main/server/index.ts @@ -806,8 +806,18 @@ const server = (port = 3000) => { env: process.env, useConpty: false, }) + + const kill = () => { + ptyProcess.kill() + } + ptyProcess.onData((data: any) => socket.emit('output', data)) - ptyProcess.onExit(() => socket.disconnect()) + ptyProcess.onExit(() => { + console.log('ptyProcess exit') + socket.disconnect() + process.off('exit', kill) + }) + socket.on('input', (data: any) => { if (data.startsWith(shell.CD_COMMAND_PREFIX)) { ptyProcess.write(shell.transformCdCommand(data.toString())) @@ -816,7 +826,9 @@ const server = (port = 3000) => { } }) socket.on('resize', (size: any) => ptyProcess.resize(size[0], size[1])) - socket.on('disconnect', () => ptyProcess.kill()) + socket.on('disconnect', kill) + + process.on('exit', kill) } else { socket.emit('output', 'node-pty is not compatible with this platform. Please install another version from GitHub https://github.com/purocean/yn/releases') }