diff --git a/app/(tabs)/ask.tsx b/app/(tabs)/ask.tsx index fd40017..f712458 100644 --- a/app/(tabs)/ask.tsx +++ b/app/(tabs)/ask.tsx @@ -95,92 +95,92 @@ export default function AskScreen() { }; }, [isHello]); - // useFocusEffect( - // useCallback(() => { - // webSocketManager.connect(); + useFocusEffect( + useCallback(() => { + webSocketManager.connect(); - // const handleChatStream = (message: WsMessage) => { - // if (message.type === 'ChatStream') { - // setUserMessages(prevMessages => { - // const newMessages = [...prevMessages]; - // const lastMessage = newMessages[newMessages.length - 1]; + // const handleChatStream = (message: WsMessage) => { + // if (message.type === 'ChatStream') { + // setUserMessages(prevMessages => { + // const newMessages = [...prevMessages]; + // const lastMessage = newMessages[newMessages.length - 1]; - // if (lastMessage && lastMessage.role === Assistant) { - // if (typeof lastMessage.content === 'string') { - // if (lastMessage.content === 'keepSearchIng') { - // // 第一次收到流式消息,替换占位符 - // lastMessage.content = message.chunk; - // } else { - // // 持续追加流式消息 - // lastMessage.content += message.chunk; - // } - // } else { - // // 如果 content 是数组,则更新第一个 text 部分 - // const textPart = lastMessage.content.find(p => p.type === 'text'); - // if (textPart) { - // textPart.text = (textPart.text || '') + message.chunk; - // } - // } - // } - // return newMessages; - // }); - // } - // }; + // if (lastMessage && lastMessage.role === Assistant) { + // if (typeof lastMessage.content === 'string') { + // if (lastMessage.content === 'keepSearchIng') { + // // 第一次收到流式消息,替换占位符 + // lastMessage.content = message.chunk; + // } else { + // // 持续追加流式消息 + // lastMessage.content += message.chunk; + // } + // } else { + // // 如果 content 是数组,则更新第一个 text 部分 + // const textPart = lastMessage.content.find(p => p.type === 'text'); + // if (textPart) { + // textPart.text = (textPart.text || '') + message.chunk; + // } + // } + // } + // return newMessages; + // }); + // } + // }; - // const handleChatStreamEnd = (message: WsMessage) => { - // if (message.type === 'ChatStreamEnd') { - // setUserMessages(prevMessages => { - // const newMessages = [...prevMessages]; - // const lastMessage = newMessages[newMessages.length - 1]; - // if (lastMessage && lastMessage.role === Assistant) { - // // 使用最终消息替换流式消息,确保 message.message 存在 - // if (message.message) { - // newMessages[newMessages.length - 1] = message.message as Message; - // } else { - // // 如果最终消息为空,则移除 'keepSearchIng' 占位符 - // return prevMessages.filter(m => !(typeof m.content === 'string' && m.content === 'keepSearchIng')); - // } - // } - // return newMessages; - // }); - // } - // }; + // const handleChatStreamEnd = (message: WsMessage) => { + // if (message.type === 'ChatStreamEnd') { + // setUserMessages(prevMessages => { + // const newMessages = [...prevMessages]; + // const lastMessage = newMessages[newMessages.length - 1]; + // if (lastMessage && lastMessage.role === Assistant) { + // // 使用最终消息替换流式消息,确保 message.message 存在 + // if (message.message) { + // newMessages[newMessages.length - 1] = message.message as Message; + // } else { + // // 如果最终消息为空,则移除 'keepSearchIng' 占位符 + // return prevMessages.filter(m => !(typeof m.content === 'string' && m.content === 'keepSearchIng')); + // } + // } + // return newMessages; + // }); + // } + // }; - // const handleError = (message: WsMessage) => { - // if (message.type === 'Error') { - // console.log(`WebSocket Error: ${message.code} - ${message.message}`); - // // 可以在这里添加错误提示,例如替换最后一条消息为错误信息 - // setUserMessages(prev => { - // // 创建新的数组和新的消息对象 - // return prev.map((msg, index) => { - // if (index === prev.length - 1 && - // typeof msg.content === 'string' && - // msg.content === 'keepSearchIng') { - // // 返回新的消息对象 - // return { - // ...msg, - // content: getWebSocketErrorMessage(message.code, t) - // }; - // } - // return msg; - // }); - // }); - // } - // }; + // const handleError = (message: WsMessage) => { + // if (message.type === 'Error') { + // console.log(`WebSocket Error: ${message.code} - ${message.message}`); + // // 可以在这里添加错误提示,例如替换最后一条消息为错误信息 + // setUserMessages(prev => { + // // 创建新的数组和新的消息对象 + // return prev.map((msg, index) => { + // if (index === prev.length - 1 && + // typeof msg.content === 'string' && + // msg.content === 'keepSearchIng') { + // // 返回新的消息对象 + // return { + // ...msg, + // content: getWebSocketErrorMessage(message.code, t) + // }; + // } + // return msg; + // }); + // }); + // } + // }; - // webSocketManager.subscribe('ChatStream', handleChatStream); - // webSocketManager.subscribe('ChatStreamEnd', handleChatStreamEnd); - // webSocketManager.subscribe('Error', handleError); + // webSocketManager.subscribe('ChatStream', handleChatStream); + // webSocketManager.subscribe('ChatStreamEnd', handleChatStreamEnd); + // webSocketManager.subscribe('Error', handleError); - // return () => { - // webSocketManager.unsubscribe('ChatStream', handleChatStream); - // webSocketManager.unsubscribe('ChatStreamEnd', handleChatStreamEnd); - // webSocketManager.unsubscribe('Error', handleError); - // // 可以在这里选择断开连接,或者保持连接以加快下次进入页面的速度 - // // webSocketManager.disconnect(); - // }; - // }, []) - // ); + // return () => { + // webSocketManager.unsubscribe('ChatStream', handleChatStream); + // webSocketManager.unsubscribe('ChatStreamEnd', handleChatStreamEnd); + // webSocketManager.unsubscribe('Error', handleError); + // // 可以在这里选择断开连接,或者保持连接以加快下次进入页面的速度 + // // webSocketManager.disconnect(); + // }; + }, []) + ); useEffect(() => { if (sessionId) {