This commit is contained in:
2025-09-10 23:33:53 +08:00
parent cb710b47df
commit bcc93fad2a
3 changed files with 32 additions and 844 deletions
+26 -26
View File
@@ -128,7 +128,7 @@ import {
formatChatMessage,
formatMessageTime
} from '@/http/api/assistant.js'
import { createPetAssistantWebSocket } from '@/utils/websocket.js'
// WebSocket功能已移除,使用HTTP API替代
export default {
data() {
@@ -208,7 +208,7 @@ export default {
})
try {
// 使用WebSocket流式响应
// 使用HTTP API流式响应
const response = await this.handleStreamResponse({
message: userInput,
temperature: 0.7,
@@ -397,7 +397,7 @@ export default {
/**
* 处理WebSocket流式响应
* 处理HTTP流式响应
* @param {Object} messageData 消息数据
* @param {Function} onAiMessageCreated 创建AI消息后的回调函数
* @returns {Promise} 返回流式响应处理结果
@@ -421,41 +421,41 @@ export default {
onAiMessageCreated(aiMessage)
}
// 使用WebSocket工具类处理流式响应
return createPetAssistantWebSocket(messageData, {
onChunk: (chunk) => {
console.log('收到WebSocket流式数据块:', chunk)
// 实时更新消息内容,实现打字机效果
aiMessage.content = chunk.totalContent
// 强制触发视图更新
this.$forceUpdate()
this.forceScrollToBottom()
},
onComplete: (result) => {
console.log('WebSocket流式响应完成:', result)
// 使用HTTP API处理流式响应
return streamAskPetAssistant(messageData)
.then(result => {
console.log('HTTP流式响应完成:', result)
// 更新消息内容
aiMessage.content = result.message || result.content || ''
// 更新消息的元数据
if (result.data.isSensitive !== undefined) {
aiMessage.isSensitive = result.data.isSensitive
if (result.isSensitive !== undefined) {
aiMessage.isSensitive = result.isSensitive
}
if (result.data.tokenCount !== undefined) {
aiMessage.tokenCount = result.data.tokenCount
if (result.tokenCount !== undefined) {
aiMessage.tokenCount = result.tokenCount
}
if (result.data.responseTime !== undefined) {
aiMessage.responseTime = result.data.responseTime
if (result.responseTime !== undefined) {
aiMessage.responseTime = result.responseTime
}
// 强制触发视图更新
this.$forceUpdate()
},
onError: (error) => {
console.error('WebSocket流式响应失败:', error)
return result
})
.catch(error => {
console.error('HTTP流式响应失败:', error)
// 显示错误提示
uni.showToast({
title: '消息发送失败',
icon: 'error',
duration: 2000
})
}
})
// 更新消息状态为错误
aiMessage.content = '抱歉,消息发送失败,请重试。'
aiMessage.isError = true
// 强制触发视图更新
this.$forceUpdate()
throw error
})
},
scrollToBottom() {