feat(douyu): 和平小店扭蛋碎片查询 + 深色模式修复 + 任务状态 WS 即时推送
- 碎片: 新增 query_xpd_fragments 任务, 复用 e语言 gamecoin 接口取扭蛋币 jb2, 账号已存角色回退(规避 Livelink 风控), accounts.xpd_fragments 字段与迁移 - 列表: 和平小店移除鱼翅/限制兑换/换绑时间列, 新增扭蛋碎片列; 操作区硬编码白底改用 theme token, 深色模式适配(三个手册共用) - 轮询: 任务状态经 WS(level=task)即时推送(二维码/绑定进度即时展示), pending/running/终态全覆盖, REST/WS 载荷统一 douyu_task_payload, raw 快照递归剥离, HTTP 轮询降频 5s/30s 兜底
This commit is contained in:
@@ -10,6 +10,7 @@ interface ConnectOptions {
|
||||
onClose?: () => void;
|
||||
onError?: () => void;
|
||||
onResult?: () => void;
|
||||
onTask?: (task: Record<string, unknown>) => void;
|
||||
}
|
||||
|
||||
const MAX_LOGS = 1000;
|
||||
@@ -76,8 +77,13 @@ export function useWebSocketLogs() {
|
||||
|
||||
ws.onmessage = (event) => {
|
||||
try {
|
||||
const msg = JSON.parse(event.data) as RealtimeLog;
|
||||
const msg = JSON.parse(event.data) as RealtimeLog & { task?: Record<string, unknown> };
|
||||
if (msg.level === 'heartbeat') return;
|
||||
if (msg.level === 'task') {
|
||||
// 任务状态即时推送(不进日志),前端直接局部更新
|
||||
if (msg.task) callbacksMapRef.current.get(key)?.onTask?.(msg.task);
|
||||
return;
|
||||
}
|
||||
if (msg.level === 'result') {
|
||||
callbacksMapRef.current.get(key)?.onResult?.();
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user