前端开发 2026年09月28日 · 1 分钟阅读

鸿蒙端渲染 SSE 流式回答:状态机比动画更重要

把等待首字、持续输出、完成、失败和恢复拆成明确状态,而不是只写成功路径。

流式交互的核心是状态机

AI 问答一旦变成流式输出,页面就不只是“请求前 / 请求后”两个状态。至少要设计:

  1. idle:等待用户提问。
  2. connecting:建立连接,等待首个事件。
  3. streaming:增量渲染答案。
  4. finished:补齐来源与反馈按钮。
  5. interrupted:连接断开,保留已生成内容。
  6. failed:失败并给出重试。

事件协议

后端事件应尽量简单:delta 表示增量文本,sources 表示来源,done 表示结束,error 带稳定错误码。端侧根据事件驱动状态,不靠猜字符串。

渲染建议

  • 每次增量追加到同一条消息,避免生成一堆气泡。
  • Markdown 渲染放在完成态,流式过程先渲染纯文本,减少布局抖动。
  • 来源引用必须可点击,并保留标题。
  • 用户切换页面时明确是取消请求还是后台继续。

断线处理

保留已收到内容,同时显示“连接中断”。直接清空屏幕会让用户失去上下文。如果接口支持续传或重新生成,再提供对应按钮。

评论

Giscus 评论配置完成后自动开启。可在 .env 中填写 GISCUS_* 变量。