fix(mp): 修复并发请求饥饿导致开发者工具卡死

- 长轮询走独立通道(requestUnlimited),不再占用 ConcurrencyLimiter 槽位
- ConcurrencyLimiter 上限 8→12,缓解 TabBar 切换请求风暴
- 新增 safeReLaunch 去重,防止并发 401 多次触发页面跳转
- maxFailures 50→10,后端不可用时快速止损而非持续 18 分钟重试

根因:咨询页长轮询每次占用槽位 25-30s,8 个槽位被占满后
所有新请求排队等待,叠加 401 场景形成死锁。
This commit is contained in:
iven
2026-05-17 17:01:24 +08:00
parent b84becfbea
commit 9d50ef7847
4 changed files with 27 additions and 11 deletions

View File

@@ -10,7 +10,7 @@ interface LongPollOptions<T> {
enabled: boolean;
/** 成功轮询间隔 ms默认 3000 */
intervalMs?: number;
/** 连续失败上限,默认 50 */
/** 连续失败上限,默认 10 */
maxFailures?: number;
}
@@ -27,7 +27,7 @@ export function useLongPolling<T>({
onData,
enabled,
intervalMs = 3000,
maxFailures = 50,
maxFailures = 10,
}: LongPollOptions<T>) {
const generation = useRef(0);
const mountedRef = useRef(true);