chore:微信小程序可以正常对话了

This commit is contained in:
2026-01-21 17:33:11 +08:00
parent 43ac988fc9
commit c63a7de1c4

View File

@@ -65,18 +65,15 @@ export default {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const socketTask = wx.connectSocket({ const socketTask = wx.connectSocket({
url: 'wss://dev.aigc-quickapp.com/ws/aikefu', url: 'wss://dev.aigc-quickapp.com/ws/aikefu',
header: { header: {}
}
}); });
let content = ''; let content = '';
let conversationId = ''; let conversationId = '';
let isAuthenticated = false; let isAuthenticated = false;
// 连接成功
socketTask.onOpen(() => { socketTask.onOpen(() => {
console.log('WebSocket 连接成功,开始认证...'); console.log('WebSocket 连接成功,开始认证...');
// 第一步:发送 auth 认证
socketTask.send({ socketTask.send({
data: JSON.stringify({ data: JSON.stringify({
action: 'auth', action: 'auth',
@@ -87,13 +84,11 @@ export default {
}); });
}); });
// 接收消息
socketTask.onMessage((res) => { socketTask.onMessage((res) => {
try { try {
const data = JSON.parse(res.data); const data = JSON.parse(res.data);
console.log('收到 WebSocket 消息:', data); console.log('收到 WebSocket 消息:', data);
// 处理认证响应
if (data.type === 'auth_success') { if (data.type === 'auth_success') {
console.log('认证成功,发送聊天消息...'); console.log('认证成功,发送聊天消息...');
isAuthenticated = true; isAuthenticated = true;
@@ -113,13 +108,16 @@ export default {
if (onComplete) onComplete({ error: errorMsg }); if (onComplete) onComplete({ error: errorMsg });
socketTask.close(); socketTask.close();
} }
// 处理聊天流式响应
else if (data.action === 'chat_response') { // 处理流式消息块
if (data.type === 'chunk') { else if (data.type === 'message' || data.event === 'message') {
const text = data.content || ''; const text = data.answer || data.content || data.text || '';
content += text; content += text;
if (onChunk) onChunk(text); if (onChunk) onChunk(text);
} else if (data.type === 'end') { }
// 处理流结束
else if (data.event === 'message_end' || data.type === 'message_end') {
conversationId = data.conversation_id || ''; conversationId = data.conversation_id || '';
if (conversationId) { if (conversationId) {
this.setConversationId(conversationId); this.setConversationId(conversationId);
@@ -130,13 +128,17 @@ export default {
resolve({ content, conversation_id: conversationId }); resolve({ content, conversation_id: conversationId });
socketTask.close(); socketTask.close();
} }
// 可选:处理 done
else if (data.type === 'done') {
console.log('对话完成:', data);
} }
} catch (e) { } catch (e) {
console.error('WebSocket 消息解析失败:', e, '原始数据:', res.data); console.error('WebSocket 消息解析失败:', e, '原始数据:', res.data);
} }
}); });
// 连接错误
socketTask.onError((err) => { socketTask.onError((err) => {
const errorMsg = 'WebSocket 连接失败'; const errorMsg = 'WebSocket 连接失败';
console.error(errorMsg, err); console.error(errorMsg, err);
@@ -144,10 +146,10 @@ export default {
if (onComplete) onComplete({ error: errorMsg }); if (onComplete) onComplete({ error: errorMsg });
}); });
// 连接关闭
socketTask.onClose(() => { socketTask.onClose(() => {
console.log('WebSocket 连接已关闭'); console.log('WebSocket 连接已关闭');
}); });
const timeout = setTimeout(() => { const timeout = setTimeout(() => {
if (!isAuthenticated || content === '') { if (!isAuthenticated || content === '') {
console.warn('WebSocket 超时,强制关闭'); console.warn('WebSocket 超时,强制关闭');