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