From 0c91f9c66b99507d82a1e5709863dab22f4f1647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 18 Jan 2026 11:45:40 +0800 Subject: [PATCH] Remove retry logic from tryUsePort function Simplified the tryUsePort function by removing the retryCurrentCount parameter and associated retry logic. Now, if a port is in use, the function increments the port number and retries up to MAX_PORT_TRY times without waiting between attempts. --- packages/napcat-webui-backend/index.ts | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/packages/napcat-webui-backend/index.ts b/packages/napcat-webui-backend/index.ts index 01823a9d..eb1e71db 100644 --- a/packages/napcat-webui-backend/index.ts +++ b/packages/napcat-webui-backend/index.ts @@ -72,7 +72,7 @@ export function setPendingTokenToSend (token: string | null) { export async function InitPort (parsedConfig: WebUiConfigType): Promise<[string, number, string]> { try { await tryUseHost(parsedConfig.host); - const port = await tryUsePort(parsedConfig.port, parsedConfig.host, 0, 5); + const port = await tryUsePort(parsedConfig.port, parsedConfig.host); return [parsedConfig.host, port, parsedConfig.token]; } catch (error) { console.log('host或port不可用', error); @@ -356,7 +356,7 @@ async function tryUseHost (host: string): Promise { }); } -async function tryUsePort (port: number, host: string, tryCount: number = 0, retryCurrentCount: number = 0): Promise { +async function tryUsePort (port: number, host: string, tryCount: number = 0): Promise { return new Promise((resolve, reject) => { try { const server = net.createServer(); @@ -367,17 +367,9 @@ async function tryUsePort (port: number, host: string, tryCount: number = 0, ret server.on('error', (err: any) => { if (err.code === 'EADDRINUSE') { - if (retryCurrentCount > 0) { - console.log(`[NapCat] [WebUi] 端口 ${port} 被占用,1秒后重试... (剩余重试次数: ${retryCurrentCount})`); - setTimeout(() => { - resolve(tryUsePort(port, host, tryCount, retryCurrentCount - 1)); - }, 1000); - return; - } - if (tryCount < MAX_PORT_TRY) { // 使用循环代替递归 - resolve(tryUsePort(port + 1, host, tryCount + 1, 0)); + resolve(tryUsePort(port + 1, host, tryCount + 1)); } else { reject(new Error(`端口尝试失败,达到最大尝试次数: ${MAX_PORT_TRY}`)); } @@ -394,4 +386,3 @@ async function tryUsePort (port: number, host: string, tryCount: number = 0, ret } }); } -