This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user