panrouter 6.1.0 → 6.1.1
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 +33 -21
package/package.json
CHANGED
package/pool-worker.mjs
CHANGED
|
@@ -401,40 +401,46 @@ function isPortOpen(port) {
|
|
|
401
401
|
});
|
|
402
402
|
}
|
|
403
403
|
|
|
404
|
-
// ───
|
|
404
|
+
// ─── 后台确保 9router 在运行(不阻塞注册)───────────────────────────────
|
|
405
|
+
|
|
406
|
+
let _serverReady = false; // 9router 是否可用
|
|
407
|
+
|
|
408
|
+
function isServerReady() { return _serverReady; }
|
|
405
409
|
|
|
406
410
|
async function ensureServer() {
|
|
407
411
|
if (await isPortOpen(SERVER_PORT)) {
|
|
408
|
-
|
|
409
|
-
|
|
412
|
+
_serverReady = true;
|
|
413
|
+
log(`9router 已就绪 (端口 ${SERVER_PORT})`, "OK");
|
|
414
|
+
return;
|
|
410
415
|
}
|
|
411
416
|
|
|
412
|
-
//
|
|
417
|
+
// 跑你的安装脚本(不等待完成)
|
|
413
418
|
const setupScript = path.join(__dirname, "setup-9router.cjs");
|
|
414
419
|
if (fs.existsSync(setupScript)) {
|
|
415
420
|
log("正在执行 9router 部署脚本...");
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
}
|
|
419
|
-
log(`9router 部署脚本执行出错: ${e.message},尝试直接启动`, "WARN");
|
|
420
|
-
}
|
|
421
|
+
spawn(process.execPath, [setupScript], {
|
|
422
|
+
cwd: __dirname, stdio: "ignore", detached: true,
|
|
423
|
+
}).unref();
|
|
421
424
|
}
|
|
422
425
|
|
|
423
|
-
//
|
|
424
|
-
|
|
426
|
+
// 后台轮询端口,直到 9router 起来为止,不阻塞主流程
|
|
427
|
+
poll9router();
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
async function poll9router() {
|
|
431
|
+
for (let i = 0; i < 60; i++) { // 等 60 秒
|
|
425
432
|
if (await isPortOpen(SERVER_PORT)) {
|
|
433
|
+
_serverReady = true;
|
|
426
434
|
log(`9router 已就绪 (端口 ${SERVER_PORT})`, "OK");
|
|
427
|
-
return
|
|
435
|
+
return;
|
|
428
436
|
}
|
|
429
|
-
if (i ===
|
|
437
|
+
if (i === 5) {
|
|
430
438
|
log("尝试直接启动 9router...");
|
|
431
439
|
spawn("9router", [], { detached: true, stdio: "ignore" }).unref();
|
|
432
440
|
}
|
|
433
441
|
await new Promise((r) => setTimeout(r, 1000));
|
|
434
442
|
}
|
|
435
|
-
|
|
436
|
-
log("9router 启动超时", "ERR");
|
|
437
|
-
return false;
|
|
443
|
+
log("9router 仍未就绪,节点已注册到主控,后续可接收升级指令", "WARN");
|
|
438
444
|
}
|
|
439
445
|
|
|
440
446
|
// ─── PID 文件 ────────────────────────────────────────────────────────────────
|
|
@@ -500,11 +506,8 @@ export async function start() {
|
|
|
500
506
|
// 清理残留进程,确保 100% 干净启动
|
|
501
507
|
cleanupStaleSelf();
|
|
502
508
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
log("无法启动代理服务,终止接入", "ERR");
|
|
506
|
-
process.exit(1);
|
|
507
|
-
}
|
|
509
|
+
// 后台启动 9router(不阻塞注册)
|
|
510
|
+
await ensureServer();
|
|
508
511
|
|
|
509
512
|
writePid();
|
|
510
513
|
connectToHub();
|
|
@@ -513,6 +516,15 @@ export async function start() {
|
|
|
513
516
|
process.on("SIGTERM", gracefulShutdown);
|
|
514
517
|
|
|
515
518
|
log("节点看门狗已启动,等待公网入口...", "ON");
|
|
519
|
+
|
|
520
|
+
// 等 9router 起来后检查状态
|
|
521
|
+
const checkReady = setInterval(async () => {
|
|
522
|
+
if (_serverReady || (await isPortOpen(SERVER_PORT))) {
|
|
523
|
+
_serverReady = true;
|
|
524
|
+
clearInterval(checkReady);
|
|
525
|
+
log("9router 已就绪,节点可正常处理请求", "ON");
|
|
526
|
+
}
|
|
527
|
+
}, 3000);
|
|
516
528
|
}
|
|
517
529
|
|
|
518
530
|
export function stopWorker() {
|