61 lines
2.6 KiB
JavaScript
61 lines
2.6 KiB
JavaScript
// 连接WebSocket
|
|
const connectWebSocket = () => {
|
|
if (isConnected.value) return;
|
|
|
|
socket.value = new WebSocket(WS_URL);
|
|
|
|
socket.value.onopen = () => {
|
|
isConnected.value = true;
|
|
addMessage('ai', '连接已建立,请问有什么可以帮您?', MESSAGE_TYPE.NORMAL);
|
|
};
|
|
|
|
socket.value.onmessage = (event) => {
|
|
console.log('收到消息:', event);
|
|
const data = event.data.trim();
|
|
if (data.startsWith('<think>')) {
|
|
aiStatus.value = 2; // 切换到思考状态
|
|
isReplying.value = true;
|
|
}
|
|
if (data.includes('</think>')) {
|
|
aiStatus.value = 1; // 切换到思考状态
|
|
}
|
|
if (data.startsWith('<answer>')) {
|
|
addingText.value = '';
|
|
isAnswer.value = true;
|
|
}
|
|
if (isAnswer.value) {
|
|
addingText.value += data.replace(/<answer>/g, '').replace(/<\/answer>/g, '');
|
|
console.log('添加的文本:', addingText.value);
|
|
}
|
|
if (!data.includes('你好,我是 AI 小助手,请输入你的问题。') && !data.includes('<videoList>')) {
|
|
processThinkingMessage(data);
|
|
}
|
|
if (data.includes('<videoList>')) {
|
|
const strList = data.split('<videoList>')[1].split('</videoList>')[0];
|
|
// videoList.value = [{ src: '/videos/1.mp4' }, { src: '/videos/2.mp4' }, { src: '/videos/3.mp4' }];
|
|
videoList.value = strList.replace(/\[/g, '').replace(/\]/g, '').split(',').map(src => ({ src: `/videos/${src.trim()}.mp4` }))
|
|
}
|
|
if (data.includes('<audio>')) {
|
|
audioPath.value = data.split('<audio>')[1].split('</audio>')[0];
|
|
}
|
|
if (data.includes('</answer>')) {
|
|
currentThinking.value = null
|
|
isReplying.value = false;
|
|
isAnswer.value = false;
|
|
audioText.value = addingText.value;
|
|
messages.value[messages.value.length - 1].loading = false;
|
|
// audioText.value='先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也'
|
|
}
|
|
|
|
};
|
|
|
|
socket.value.onerror = (error) => {
|
|
console.error('WebSocket错误:', error);
|
|
addMessage('ai', '连接出错,请稍后再试', MESSAGE_TYPE.NORMAL);
|
|
};
|
|
|
|
socket.value.onclose = () => {
|
|
isConnected.value = false;
|
|
addMessage('ai', '连接已断开', MESSAGE_TYPE.NORMAL);
|
|
};
|
|
}; |