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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/pool-worker.mjs +36 -21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "panrouter",
3
- "version": "6.2.1",
3
+ "version": "6.3.2",
4
4
  "description": "让 Claude Code 免费使用 DeepSeek 等模型,无需 API Key",
5
5
  "type": "module",
6
6
  "bin": {
package/pool-worker.mjs CHANGED
@@ -256,11 +256,7 @@ async function doRestart() {
256
256
  clearTimeout(reconnectTimer);
257
257
  reconnectTimer = null;
258
258
  }
259
- const serverOk = await ensureServer();
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; // 9router 是否可用
402
+ let _serverReady = false;
407
403
 
408
404
  function isServerReady() { return _serverReady; }
409
405
 
410
- async function ensureServer() {
411
- if (await isPortOpen(SERVER_PORT)) {
412
- _serverReady = true;
413
- log(`9router 已就绪 (端口 ${SERVER_PORT})`, "OK");
414
- return;
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
- // 跑你的完整脚本(检查→安装→注入DB→启动,全部包了)
413
+ function _ensureServer() {
418
414
  const setupScript = path.join(__dirname, "setup-9router.cjs");
419
- if (fs.existsSync(setupScript)) {
420
- log("正在执行 9router 部署脚本...");
421
- spawn(process.execPath, [setupScript], {
422
- cwd: __dirname, stdio: "ignore", detached: true,
423
- }).unref();
415
+ if (!fs.existsSync(setupScript)) {
416
+ log("找不到 setup-9router.cjs,直接尝试启动 9router", "WARN");
417
+ trySpawn9router();
418
+ poll9router();
419
+ return;
424
420
  }
425
421
 
426
- // 一直轮询到 9router 起来为止(不限次数,不阻塞注册)
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)); // 60秒后放慢频率
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
- await ensureServer();
521
+ ensureServer();
507
522
 
508
523
  writePid();
509
524
  connectToHub();