AI 客服是“趣游兔”关联度最高的入口,但早期使用轮询方案,首字节延迟高达 3.5 秒,甚至出现会话中断。我负责将其改造为流式推送,关键步骤如下。
选择 SSE
- 对比 WebSocket 与 SSE,客服场景更偏服务端单向推送,于是选择 SSE 简化握手和重连。
- 基于 Spring WebFlux 封装响应流,并接入阿里云 dashscope SDK,把大模型输出切片推送给前端。
心跳与重连
- 设计 15 秒心跳,客户端检测到断流会自动重连。
- 服务端维护会话表,确保重连后能从最新 token 继续输出。
监控指标
- 埋点记录每条消息的首字节耗时、整体响应和中断率。
- 在 Prometheus + Grafana 中建立看板,实时查看状态。
效果
- 首字节延迟降至小于 1 秒,会话中断率降到 2.4%,满意度提升 40%+。
- 运营同学反馈“终于能看着 AI 一边输出一边思考”,互动感显著增强。
这次优化让我第一次把云上大模型、Java 后端和前端交互串联起来,也为后续的校园项目提供了可复用的组件。