Skip to content

Latest commit

 

History

History
166 lines (132 loc) · 4.39 KB

File metadata and controls

166 lines (132 loc) · 4.39 KB

WebSocket连接状态监控指南

🎯 连接生命周期分析

正常连接流程

  1. 初始化 → 创建会话 → 建立WebSocket连接
  2. 录音开始 → 发送音频数据 → 实时翻译
  3. 录音停止 → 发送结束标记 → 服务器处理完成
  4. 连接保持 → 等待下次录音或超时关闭

当前观察到的模式

模式1:服务器主动关闭(正常行为)

时间线:
T+0s: 发送结束标记
T+0s: 服务器收到结束标记,处理完成
T+0s: 服务器主动关闭连接(代码1006)
T+0s: 客户端检测到连接关闭
T+0s: 跳过重连(因为检测到服务器主动关闭)

模式2:网络异常关闭(需要重连)

时间线:
T+0s: 正在录音,发送音频数据
T+Xs: 网络中断或连接异常
T+Xs: WebSocket错误事件
T+Xs: 连接关闭(代码1006)
T+Xs: 客户端检测到异常关闭
T+Xs: 开始重连流程

🔍 关键监控指标

1. 连接状态指标

  • ws.readyState: WebSocket连接状态
    • 0: CONNECTING - 连接中
    • 1: OPEN - 已连接
    • 2: CLOSING - 关闭中
    • 3: CLOSED - 已关闭
  • isConnected: 内部连接状态标志
  • conversationId: 会话ID

2. 时间指标

  • lastFinishTime: 最后发送结束标记的时间
  • timeSinceFinish: 距离发送结束标记的时间间隔
  • 连接建立时间
  • 连接持续时间

3. 错误指标

  • 错误代码(1006, 1008, 1002等)
  • 错误原因
  • 重连次数
  • 重连成功率

📊 日志分析要点

正常行为的日志特征

✅ WebSocket连接已建立
📤 发送配置信息成功
🎵 发送音频数据成功
🏁 发送结束标记成功
🔌 WebSocket连接已关闭 (代码1006)
ℹ️ 检测到服务器主动关闭连接,跳过重连

异常行为的日志特征

✅ WebSocket连接已建立
🎵 发送音频数据成功
❌ WebSocket错误事件
🔌 WebSocket连接已关闭 (代码1006)
🔄 准备尝试重连
🔄 尝试重连 (1/3)

🛠️ 改进策略

1. 智能重连策略

  • 服务器主动关闭:跳过重连,等待下次需要时重新建立
  • 网络异常关闭:立即重连,最多重试3次
  • 认证错误:清除认证信息,跳转登录

2. 连接状态管理

  • 连接复用:检测现有连接,避免重复建立
  • 健康检查:定期检查连接状态,及时发现异常
  • 状态同步:确保录音状态和连接状态一致

3. 错误处理优化

  • 错误分类:区分不同类型的连接错误
  • 用户提示:提供友好的错误提示
  • 自动恢复:在可能的情况下自动恢复连接

🧪 测试场景

场景1:正常录音流程

  1. 开始录音
  2. 说话(发送音频数据)
  3. 停止录音
  4. 观察连接状态

预期结果

  • 录音正常进行
  • 发送结束标记后连接可能关闭(正常)
  • 下次录音时重新建立连接

场景2:快速开始停止

  1. 快速点击开始录音
  2. 立即停止录音
  3. 重复多次

预期结果

  • 录音状态正确管理
  • 避免在停止状态下发送数据
  • 连接状态稳定

场景3:网络不稳定

  1. 在网络切换时进行录音
  2. 观察重连行为

预期结果

  • 检测到网络异常时自动重连
  • 重连成功后继续录音
  • 用户收到适当的提示

📈 性能指标

连接稳定性指标

  • 连接断开率:< 5%
  • 重连成功率:> 90%
  • 平均连接持续时间:> 30秒

用户体验指标

  • 录音成功率:> 95%
  • 错误提示友好度:用户能理解当前状态
  • 响应时间:< 2秒

🔧 监控工具

1. 日志分析

  • 使用日志分析工具统计错误模式
  • 监控连接生命周期时间
  • 分析重连成功率

2. 性能监控

  • 监控WebSocket连接状态
  • 统计音频数据发送频率
  • 分析网络延迟和丢包率

3. 用户反馈

  • 收集用户报告的问题
  • 分析错误发生的场景
  • 持续优化用户体验

📝 总结

通过深入分析WebSocket连接的生命周期,我们发现:

  1. 服务器主动关闭是正常行为:在收到结束标记后,服务器会主动关闭连接
  2. 需要区分不同类型的关闭:主动关闭vs异常关闭
  3. 智能重连策略很重要:避免不必要的重连,提高用户体验
  4. 状态管理是关键:确保录音状态和连接状态的一致性

这些改进措施应该能够显著提升WebSocket连接的稳定性和用户体验。