mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-05 23:19:37 +00:00
* feat: 优化离线重连机制,增加前端登录错误提示与二维码刷新功能 - 增加全局掉线检测弹窗 - 增强登录错误解析,支持显示 serverErrorCode 和 message - 优化二维码登录 UI,错误时显示详细原因并提供大按钮重新获取 - 核心层解耦,通过事件抛出 KickedOffLine 通知 - 支持前端点击刷新二维码接口 * feat: 新增看门狗汪汪汪 * cp napcat-shell-loader/launcher-win.bat * refactor: 重构重启流程,移除旧的重启逻辑,新增基于 WebUI 的重启请求处理 * fix: 刷新二维码清楚错误信息
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import QQManager from '@/controllers/qq_manager';
|
|
|
|
/**
|
|
* 轮询等待后端进程恢复
|
|
* @param maxWaitTime 最大等待时间,单位毫秒
|
|
* @param onSuccess 成功回调
|
|
* @param onTimeout 超时回调
|
|
*/
|
|
export async function waitForBackendReady (
|
|
maxWaitTime: number = 15000,
|
|
onSuccess?: () => void,
|
|
onTimeout?: () => void
|
|
): Promise<boolean> {
|
|
const startTime = Date.now();
|
|
|
|
return new Promise<boolean>((resolve) => {
|
|
const timer = setInterval(async () => {
|
|
try {
|
|
// 尝试请求后端,设置一个较短的请求超时避免挂起
|
|
await QQManager.getQQLoginInfo({ timeout: 500 });
|
|
// 如果能走到这一步说明请求成功了
|
|
clearInterval(timer);
|
|
onSuccess?.();
|
|
resolve(true);
|
|
} catch (_e) {
|
|
// 如果请求失败(后端没起来),检查是否超时
|
|
if (Date.now() - startTime > maxWaitTime) {
|
|
clearInterval(timer);
|
|
onTimeout?.();
|
|
resolve(false);
|
|
}
|
|
}
|
|
}, 500); // 每 500ms 探测一次
|
|
});
|
|
}
|