单IceServer多URL与多IceServer单URL的配置差异咨询
两种ICE服务器配置方案的差异对比
配置示例
第一种配置
{ iceServers: [ { urls: [ "turn:aturn.com?transport=udp", "turn:aturn.com?transport=tcp" ] } ] }
第二种配置
{ iceServers: [ { urls: ["turn:aturn.com?transport=udp"] }, { urls: ["turn:aturn.com?transport=tcp"] } ] }
核心差异
属性共享范围不同
第一种配置里,UDP和TCP的URL属于同一个ICE服务器条目,如果要添加username、credential这类认证信息,两个URL会共用一套;第二种是两个独立的服务器条目,每个条目可以单独配置专属的认证信息,互相不干扰。ICE候选处理逻辑不同
第一种的两个URL会被ICE认定为同一服务器的不同传输方式,检查连通性时会优先尝试UDP(默认优先级更高),失败后直接切换到同服务器的TCP选项,流程更顺畅;第二种里两个URL是完全独立的服务器候选,ICE会分开对它们执行服务器发现、连通性检查流程,相对开销更大。错误重试机制不同
如果第一种里的UDP连接失败,ICE会直接复用同一服务器的上下文尝试TCP连接,无需重新走一遍服务器认证和会话初始化流程;第二种里第一个UDP条目连接失败后,会启动新的TCP条目检查流程,相当于重新发起一次服务器连接请求。适配场景不同
第一种适合同一TURN服务器同时支持UDP、TCP传输,且两种方式使用相同认证信息的场景,配置更简洁;第二种适合给不同传输方式配置不同认证信息,或者需要将两种传输方式作为独立服务器资源管理的场景,灵活性更高。
内容的提问来源于stack exchange,提问作者progquester
相关产品推荐
相关产品推荐

