panrouter 6.2.0 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/pool-worker.mjs +32 -24
package/package.json
CHANGED
package/pool-worker.mjs
CHANGED
|
@@ -256,11 +256,7 @@ async function doRestart() {
|
|
|
256
256
|
clearTimeout(reconnectTimer);
|
|
257
257
|
reconnectTimer = null;
|
|
258
258
|
}
|
|
259
|
-
|
|
260
|
-
if (!serverOk) {
|
|
261
|
-
log("代理服务重启失败", "ERR");
|
|
262
|
-
process.exit(1);
|
|
263
|
-
}
|
|
259
|
+
await ensureServer();
|
|
264
260
|
reconnectDelay = WS_RECONNECT_BASE;
|
|
265
261
|
writePid();
|
|
266
262
|
connectToHub();
|
|
@@ -403,7 +399,7 @@ function isPortOpen(port) {
|
|
|
403
399
|
|
|
404
400
|
// ─── 后台确保 9router 在运行(不阻塞注册)───────────────────────────────
|
|
405
401
|
|
|
406
|
-
let _serverReady = false;
|
|
402
|
+
let _serverReady = false;
|
|
407
403
|
|
|
408
404
|
function isServerReady() { return _serverReady; }
|
|
409
405
|
|
|
@@ -414,30 +410,42 @@ async function ensureServer() {
|
|
|
414
410
|
return;
|
|
415
411
|
}
|
|
416
412
|
|
|
417
|
-
// 跑你的安装脚本(负责检查、安装、注入数据库,不依赖它启动)
|
|
418
413
|
const setupScript = path.join(__dirname, "setup-9router.cjs");
|
|
419
|
-
if (fs.existsSync(setupScript)) {
|
|
420
|
-
log("
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
414
|
+
if (!fs.existsSync(setupScript)) {
|
|
415
|
+
log("找不到 setup-9router.cjs,直接尝试启动 9router", "WARN");
|
|
416
|
+
trySpawn9router();
|
|
417
|
+
poll9router();
|
|
418
|
+
return;
|
|
424
419
|
}
|
|
425
420
|
|
|
426
|
-
//
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
421
|
+
// 第一步:跑你的脚本(安装+注入数据库)
|
|
422
|
+
log("正在执行 9router 安装与数据库配置...");
|
|
423
|
+
const child = spawn(process.execPath, [setupScript], {
|
|
424
|
+
cwd: __dirname, stdio: "ignore", detached: true,
|
|
425
|
+
});
|
|
426
|
+
child.unref();
|
|
427
|
+
|
|
428
|
+
// 第二步:脚本退出后直接 spawn 9router(静默不弹窗)
|
|
429
|
+
child.on("exit", () => {
|
|
430
|
+
log("部署脚本完成,正在启动 9router...");
|
|
431
|
+
trySpawn9router();
|
|
432
|
+
});
|
|
436
433
|
|
|
437
|
-
//
|
|
434
|
+
// 第三步:后台轮询端口
|
|
438
435
|
poll9router();
|
|
439
436
|
}
|
|
440
437
|
|
|
438
|
+
function trySpawn9router() {
|
|
439
|
+
try {
|
|
440
|
+
const r = spawn("9router", [], {
|
|
441
|
+
detached: true, windowsHide: true, stdio: "ignore",
|
|
442
|
+
});
|
|
443
|
+
r.unref();
|
|
444
|
+
} catch (e) {
|
|
445
|
+
log(`启动 9router 失败: ${e.message}`, "ERR");
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
441
449
|
async function poll9router() {
|
|
442
450
|
for (let i = 0; ; i++) {
|
|
443
451
|
if (await isPortOpen(SERVER_PORT)) {
|
|
@@ -446,7 +454,7 @@ async function poll9router() {
|
|
|
446
454
|
return;
|
|
447
455
|
}
|
|
448
456
|
if (i < 60) await new Promise((r) => setTimeout(r, 1000));
|
|
449
|
-
else await new Promise((r) => setTimeout(r, 5000));
|
|
457
|
+
else await new Promise((r) => setTimeout(r, 5000));
|
|
450
458
|
}
|
|
451
459
|
}
|
|
452
460
|
|