修复http服务关闭时没有断开所有连接的问题
parent
07c9e2f675
commit
5345b001e8
|
@ -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<Socket>()
|
||||
|
||||
const handleStartServer = async(port = 9000, ip = '127.0.0.1') => new Promise<void>((resolve, reject) => {
|
||||
httpServer = http.createServer((req, res) => {
|
||||
|
@ -47,6 +49,13 @@ const handleStartServer = async(port = 9000, ip = '127.0.0.1') => new Promise<vo
|
|||
console.log(error)
|
||||
reject(error)
|
||||
})
|
||||
httpServer.on('connection', (socket) => {
|
||||
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<void>((resolve, reject) => {
|
|||
}
|
||||
resolve()
|
||||
})
|
||||
for (const socket of sockets) socket.destroy()
|
||||
sockets.clear()
|
||||
})
|
||||
|
||||
|
||||
|
|
|
@ -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<Socket>()
|
||||
|
||||
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<void>((resolve, reject) => {
|
|||
}
|
||||
resolve()
|
||||
})
|
||||
for (const socket of sockets) socket.destroy()
|
||||
sockets.clear()
|
||||
})
|
||||
|
||||
export const stopServer = async() => {
|
||||
|
|
Loading…
Reference in New Issue