panrouter 6.2.1 → 6.3.2
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 +36 -21
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
|
+
ensureServer();
|
|
264
260
|
reconnectDelay = WS_RECONNECT_BASE;
|
|
265
261
|
writePid();
|
|
266
262
|
connectToHub();
|
|
@@ -403,30 +399,49 @@ 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
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
_serverReady = true;
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
406
|
+
function ensureServer() {
|
|
407
|
+
isPortOpen(SERVER_PORT).then(open => {
|
|
408
|
+
if (open) { _serverReady = true; log(`9router 已就绪 (端口 ${SERVER_PORT})`, "OK"); return; }
|
|
409
|
+
_ensureServer();
|
|
410
|
+
});
|
|
411
|
+
}
|
|
416
412
|
|
|
417
|
-
|
|
413
|
+
function _ensureServer() {
|
|
418
414
|
const setupScript = path.join(__dirname, "setup-9router.cjs");
|
|
419
|
-
if (fs.existsSync(setupScript)) {
|
|
420
|
-
log("
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
415
|
+
if (!fs.existsSync(setupScript)) {
|
|
416
|
+
log("找不到 setup-9router.cjs,直接尝试启动 9router", "WARN");
|
|
417
|
+
trySpawn9router();
|
|
418
|
+
poll9router();
|
|
419
|
+
return;
|
|
424
420
|
}
|
|
425
421
|
|
|
426
|
-
|
|
422
|
+
log("正在执行 9router 安装与数据库配置...");
|
|
423
|
+
const child = spawn(process.execPath, [setupScript], {
|
|
424
|
+
cwd: __dirname, stdio: "inherit",
|
|
425
|
+
});
|
|
426
|
+
child.on("exit", () => {
|
|
427
|
+
log("部署脚本完成,正在启动 9router...");
|
|
428
|
+
trySpawn9router();
|
|
429
|
+
});
|
|
430
|
+
|
|
427
431
|
poll9router();
|
|
428
432
|
}
|
|
429
433
|
|
|
434
|
+
function trySpawn9router() {
|
|
435
|
+
try {
|
|
436
|
+
const r = spawn("9router", [], {
|
|
437
|
+
detached: true, windowsHide: true, stdio: "ignore",
|
|
438
|
+
});
|
|
439
|
+
r.unref();
|
|
440
|
+
} catch (e) {
|
|
441
|
+
log(`启动 9router 失败: ${e.message}`, "ERR");
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
430
445
|
async function poll9router() {
|
|
431
446
|
for (let i = 0; ; i++) {
|
|
432
447
|
if (await isPortOpen(SERVER_PORT)) {
|
|
@@ -435,7 +450,7 @@ async function poll9router() {
|
|
|
435
450
|
return;
|
|
436
451
|
}
|
|
437
452
|
if (i < 60) await new Promise((r) => setTimeout(r, 1000));
|
|
438
|
-
else await new Promise((r) => setTimeout(r, 5000));
|
|
453
|
+
else await new Promise((r) => setTimeout(r, 5000));
|
|
439
454
|
}
|
|
440
455
|
}
|
|
441
456
|
|
|
@@ -503,7 +518,7 @@ export async function start() {
|
|
|
503
518
|
cleanupStaleSelf();
|
|
504
519
|
|
|
505
520
|
// 后台启动 9router(不阻塞注册)
|
|
506
|
-
|
|
521
|
+
ensureServer();
|
|
507
522
|
|
|
508
523
|
writePid();
|
|
509
524
|
connectToHub();
|