fix: 修复SSE连接关闭后停止按钮不消失的问题
- 添加hasCompleted标志位跟踪complete事件 - onClose时检查并补充完成逻辑 - sendMessage时重置hasCompleted状态
This commit is contained in:
@ -92,6 +92,7 @@ export class DialogSession {
|
||||
private toolContext: ToolExecutorContext;
|
||||
private accumulatedText = '';
|
||||
private isActive = false;
|
||||
private hasCompleted = false; // 标记是否已收到 complete 事件
|
||||
private segments: MessageSegment[] = [];
|
||||
private currentTextSegment: MessageSegment | null = null;
|
||||
|
||||
@ -331,6 +332,7 @@ export class DialogSession {
|
||||
}
|
||||
|
||||
this.isActive = true;
|
||||
this.hasCompleted = false; // 重置完成标志
|
||||
this.accumulatedText = '';
|
||||
this.segments = [];
|
||||
this.currentTextSegment = null;
|
||||
@ -686,6 +688,7 @@ export class DialogSession {
|
||||
|
||||
onComplete: (data) => {
|
||||
this.isActive = false;
|
||||
this.hasCompleted = true; // 标记已收到 complete 事件
|
||||
this.finalizeTextSegment();
|
||||
|
||||
// 追踪 AI 消息(用于后端重启后恢复)
|
||||
@ -807,6 +810,15 @@ export class DialogSession {
|
||||
|
||||
onClose: () => {
|
||||
console.log('[DialogSession] SSE 连接已关闭');
|
||||
// 如果没有收到 complete 事件,需要补充完成逻辑
|
||||
if (!this.hasCompleted && this.isActive) {
|
||||
console.log('[DialogSession] 未收到 complete 事件,补充完成处理');
|
||||
this.finalizeTextSegment();
|
||||
if (this.accumulatedText) {
|
||||
historyManager.trackAiMessage(this.accumulatedText);
|
||||
}
|
||||
callbacks.onComplete?.(this.segments);
|
||||
}
|
||||
this.isActive = false;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user