From 5345b001e8263228c5665027082a1e5524de5a4d Mon Sep 17 00:00:00 2001 From: lyswhut Date: Fri, 29 Mar 2024 16:38:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dhttp=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=97=B6=E6=B2=A1=E6=9C=89=E6=96=AD=E5=BC=80?= =?UTF-8?q?=E6=89=80=E6=9C=89=E8=BF=9E=E6=8E=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/modules/openApi/index.ts | 11 +++++++++++ src/main/modules/sync/server/server/server.ts | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/main/modules/openApi/index.ts b/src/main/modules/openApi/index.ts index e58a7baa..98b7db13 100644 --- a/src/main/modules/openApi/index.ts +++ b/src/main/modules/openApi/index.ts @@ -1,4 +1,5 @@ import http from 'node:http' +import type { Socket } from 'node:net' let status: LX.OpenAPI.Status = { status: false, @@ -7,6 +8,7 @@ let status: LX.OpenAPI.Status = { } let httpServer: http.Server +let sockets = new Set() const handleStartServer = async(port = 9000, ip = '127.0.0.1') => new Promise((resolve, reject) => { httpServer = http.createServer((req, res) => { @@ -47,6 +49,13 @@ const handleStartServer = async(port = 9000, ip = '127.0.0.1') => new Promise { + sockets.add(socket) + socket.once('close', () => { + sockets.delete(socket) + }) + socket.setTimeout(4000) + }) httpServer.on('listening', () => { const addr = httpServer.address() @@ -69,6 +78,8 @@ const handleStopServer = async() => new Promise((resolve, reject) => { } resolve() }) + for (const socket of sockets) socket.destroy() + sockets.clear() }) diff --git a/src/main/modules/sync/server/server/server.ts b/src/main/modules/sync/server/server/server.ts index e757fe60..037cc592 100644 --- a/src/main/modules/sync/server/server/server.ts +++ b/src/main/modules/sync/server/server/server.ts @@ -10,6 +10,7 @@ import log from '../../log' import { sendServerStatus } from '@main/modules/winMain' import { decryptMsg, encryptMsg, generateCode as handleGenerateCode } from '../utils/tools' import migrateData from '../../migrate' +import type { Socket } from 'node:net' let status: LX.Sync.ServerStatus = { @@ -114,6 +115,7 @@ const authConnection = (req: http.IncomingMessage, callback: (err: string | null let wss: LX.Sync.Server.SocketServer | null let httpServer: http.Server +let sockets = new Set() function noop() {} function onSocketError(err: Error) { @@ -290,6 +292,12 @@ const handleStartServer = async(port = 9527, ip = '0.0.0.0') => await new Promis console.log(error) reject(error) }) + httpServer.on('connection', (socket) => { + sockets.add(socket) + socket.once('close', () => { + sockets.delete(socket) + }) + }) httpServer.on('listening', () => { const addr = httpServer.address() @@ -321,6 +329,8 @@ const handleStopServer = async() => new Promise((resolve, reject) => { } resolve() }) + for (const socket of sockets) socket.destroy() + sockets.clear() }) export const stopServer = async() => {