修复: CR-24 AiChat listener 泄漏(stopListener 接入 onBeforeUnmount+补 clearStreamWatchdog)
useAiEvents stopListener 补 clearStreamWatchdog()(原漏清 _streamWatchdog 计时器,卸载后 130s onStreamTimeout 仍写 state);AiChat onBeforeUnmount 补 store.stopListener()(原全仓零调用 listener+watchdog 永久泄漏)。R1 双注册经核查 App.vue:94 v-if 互斥(detach 卸载主窗口 AiChat)同一时刻仅一窗口持活 listener,无真实双消费,不加去重标志避免过度防御(留后续:互斥逻辑改变则需去重或后端 emit_to 定向)。批8 wsyxw19ai,vue-tsc 0
This commit is contained in:
@@ -254,12 +254,15 @@ export async function startListener() {
|
||||
}
|
||||
}
|
||||
|
||||
/** 停止事件监听(卸载时调用,释放后端 listener) */
|
||||
/** 停止事件监听(卸载时调用,释放后端 listener + 清看门狗)
|
||||
* 清看门狗:卸载时若仍在生成,_streamWatchdog 计时器未释放,130s 后 onStreamTimeout
|
||||
* 仍写 state(messages.push/置 streaming)——已卸载组件不应再被触发。故同步清除。 */
|
||||
function stopListener() {
|
||||
_unlistenAiEvent?.()
|
||||
_unlistenConvChanged?.()
|
||||
_unlistenAiEvent = null
|
||||
_unlistenConvChanged = null
|
||||
clearStreamWatchdog()
|
||||
}
|
||||
|
||||
export function useAiEvents() {
|
||||
|
||||
Reference in New Issue
Block a user