移除前端代码中的 30s setTimeout 超时逻辑,改为监听 WebSocket 事件。
my-uniapp-vue3/src/utils/websocket.ts (新建)my-uniapp-vue3/src/pages/book-generator/index.vue (修改)my-uniapp-vue3/src/pages/book-generator/chapter-detail.vue (修改)my-uniapp-vue3/src/utils/websocket.tssubscriptions Set 跟踪已订阅的事件on() 方法订阅时记录事件到 subscriptions,并发送 _subscribe 消息到服务器off() 方法取消订阅时从 subscriptions 移除handleReconnect() 重连成功后调用 resubscribe() 重新发送订阅消息resubscribe() 遍历 subscriptions 重新发送订阅请求my-uniapp-vue3/src/pages/book-generator/chapter-detail.vueaudioPollTimer 和 videoPollTimer 变量存储定时器 IDhandleGenerateAudio() 和 handleGenerateVideo() 使用全局变量存储定时器onUnmounted() 中添加 clearInterval 清理逻辑my-uniapp-vue3/src/pages/book-generator/chapter-detail.vueonMounted() 为一个onMounted(URL参数加载和章节加载)保留onMounted(WebSocket 连接)删除,代码合并到第一个中