网络问题处理
P2P 连接中的 NAT 穿透和防火墙问题。
挑战
P2P 连接经常因为 NAT(网络地址转换)和防火墙限制而失败,尤其是在企业网络或移动网络环境下。
尝试过的方案
- 多 STUN 服务器:配置备用 STUN 服务器
- 连接诊断:加日志定位失败原因
- 用户反馈:连接失败时给出清晰的错误提示
有效的做法
- 用 Google 公共 STUN 服务器作为主力,配备备用服务器
- 尽早检测连接失败,显示有用的错误信息
- 给高级用户提供手动输入 IP 的备选方式
没用的做法
- 自动重试失败的连接——只会让用户烦躁
- 在 UI 里展示复杂的网络诊断信息——对大多数用户来说太技术了
总结
不是所有网络环境都支持 P2P。与其默默重试,不如优雅地失败并给出清晰的提示。
如果重来
会实现 TURN 服务器作为最后的兜底方案,虽然这违背了"不经过服务器存储"的原则,但中继只传输加密数据,不存储任何内容。