1. 为啥 AI 电商智能客服聊天用 WebSocket 不用 SSE?
- SSE 只能用户先发消息、服务器被动回消息,后端没法主动弹窗发内容;WebSocket 是双向实时通讯,服务器随时随地能主动推消息。
- 用户中途随时换问题、打断 AI 回复 用户看着 AI 打字,突然改需求:"不要球鞋了,换皮鞋"。 WebSocket 可以实时把新消息立马传给后端,中断上一轮 AI 生成;SSE 单向通信很难灵活中断旧请求。
- 前端用fetch 配合 ReadableStream 流读取SSE 数据流;
2.AI 打字页面闪烁卡顿咋修好的?
大白话:原来直接原地改消息内容页面不刷新,会攒到一起突然冒出一大段内容。我改成{...原对象,content:原对象content+拼接内容} 替换数组项。
节流优化思路 不要收到片段就滚,积攒一段时间(比如 50ms)只滚动一次,不管中间来了多少包文字,只统一滚一次,大幅减少 DOM 重排,解决卡顿。
3.AI 接口掉线、卡壳,前端怎么防崩?
大白话:正在出 AI 答案的时候,按扭变成停止,点击停止就断掉 AI 请求;网断了给用户整个重试按钮,出错关掉加载动画。
4.AI 一边打字一边渲染 markdown,代码半截乱码怎么办?
大白话:AI 字没打完的时候,先当成普通文字展示,等 AI 全部说完,再一次性解析代码、表格,顺便过滤危险代码防止页面被篡改。
5.AI 打字快慢谁控制?
大白话:咱们后端控速度,50 到 300 毫秒发一小段字,前端只管接收展示就行,统一调速更方便。
6. 聊天记录太多,页面加载卡
大白话:历史消息别一次性全拉出来,往上滑再加载更早记录;消息上千条就用虚拟列表,屏幕外的消息不生成 DOM,少占资源。