最初的目标很简单:做一个网页语音房间,让同城朋友尽量直接连接,不再额外维护一整套复杂平台。真正开始之后,问题立刻从页面按钮延伸到 NAT、ICE、TURN、SFU、临时凭证和质量切换。
连得上不等于可用
只用 STUN 时,几台测试设备可以成功建立 P2P,这证明基本路径成立。但真实网络并不保证每次都给出同样结果。对称 NAT、企业网络和移动网络都可能让直连失败,这时 TURN 不是优化,而是最后的可达性保障。
Mesh 在人数很少时延迟低、架构直接,但每个客户端都要承担更多上传。人数增加之后,SFU 的集中转发更稳定。架构因此不能只选一个名词,而要根据人数和质量切换。
安全边界跟着费用一起出现
使用外部 TURN 或 SFU 服务之后,临时凭证就意味着真实成本。任何人都能获取凭证,系统就可能被当作公共中继滥用。因此只有已经进入房间的客户端才能申请短期凭证,并且服务端必须限制有效期和权限。
这类安全问题不是上线前最后补的一层,而是从架构选择开始就存在。
混合方案是一种承认
最终更合理的方向是:优先 P2P,质量下降或人数增加时转向 SFU,TURN 负责兜底。它承认网络环境不会永远理想,也承认简单与可靠往往需要在运行时重新平衡。
