常见来源发送按钮被快速点击两次。网络超时后客户端重试。HTTP 保存和 WebSocket 保存同时执行。前端把本地临时消息与服务端回传消息都追加,没有替换。正确处理客户端每次发送生成唯一 client_message_id;服务端建立唯一约束并在重复请求时返回原消息;前端收到服务端消息后用唯一号替换临时消息。