8520192a986a2de9c0ab0d9d9c095ba528725a2e
Some checks failed
Deploy / deploy (push) Has been cancelled
## 删掉的 - **六个从没人传过的配置项。** WebSocketConfig 上的 maxReconnectAttempts / reconnectDelay / maxReconnectDelay / heartbeatTime / enableHeartbeat / enableAutoReconnect,六个默认值、六处 ??,而三条通道从建起来到现在没有一个调用方 传过任何一个,也没在运行时改过。收成三个模块常量,连带三处恒真/恒不触发的分支 (if (enableHeartbeat)、!enableAutoReconnect、reconnectAttempts >= Infinity)。 - **一个没人用的工厂。** createWebSocketComposable 顶着二十五行 @example,示例里那条 通知通道并不存在,三个真实 composable 一个都没调它,各自手写一遍转发对象。 - **三个空壳子类。** SubmissionWebSocket / FlowchartWebSocket / ConfigWebSocket 的全部 内容就是在构造函数里拼 URL;前两个连 URL 都是同一条 /ws/submissions,两个类加两份 三十行 composable 的差异只有一个类型参数。改成 useChannel(path, handler) 一个工厂, 三个 useXxxWebSocket 各自只剩一行。 - SubscribingWebSocket 这一层并进基类:三层继承变两层,只剩 CollabWebSocket 还在扩展 (它确有自己的二进制缓冲与房间语义)。URL 拼接收进 channelUrl()。 行为一处没动:重连仍然不封顶(后端 deploy 重启一次就超过原来那 15 秒,这条注释保留)、 指数退避带抖动、30 秒上限、心跳 30 秒、force_logout、断线重连补订阅全部照旧。 ## 验证 起全栈用浏览器实跑: - 提交一发 Python3,/ws/submissions 连上并推回 judging → judging → finished, 控制台没有出现「WebSocket未及时响应,启动轮询保底」,即结果确实走的 WS 而非轮询; - kill 掉后端观察三条通道重连:682ms → 1.4s → 2.4s → 4.4s → …… → 15~26s 封顶, 指数退避与 30 秒上限均符合; - 后端起回来后**不刷新页面**自动恢复(/ws/config、/ws/collab 各自重连成功), 再提交一发仍然全程走 WS —— 这正是「重连不封顶」要保的场景; - vue-tsc --noEmit exit 0;vite build 通过。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012j1vgeDqay8wKCh8dPgPcH
Description
No description provided
Languages
TypeScript
58.5%
Vue
39.6%
Shell
1.3%
Dockerfile
0.5%