Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebRTC如何决定使用哪个TURN服务器_Javascript_Webrtc_Stun_Turn - Fatal编程技术网

Javascript WebRTC如何决定使用哪个TURN服务器

Javascript WebRTC如何决定使用哪个TURN服务器,javascript,webrtc,stun,turn,Javascript,Webrtc,Stun,Turn,把这个问题岔开 WebRTC如何确定在提供多个TURN服务器时使用哪个TURN服务器?每个Ice候选服务器在收集时都有优先权。这是两种东西的混合,我相信每个平台(Chrome、FireFox等)都有自己的偏好 下面是一个解释如何生成优先级的示例。每个优先级都保证是唯一的,因为候选ID应该是唯一的(如果遵循RFC)。所以,你永远不应该把事情的轻重缓急联系在一起。优先权较高的优先权会先试用,如果无法与它们建立连接,则使用下一条线路 有关优先权的RFC报价: 使用公式时,代理通过确定 每种候选类型的首

把这个问题岔开


WebRTC如何确定在提供多个TURN服务器时使用哪个TURN服务器?

每个Ice候选服务器在收集时都有优先权。这是两种东西的混合,我相信每个平台(Chrome、FireFox等)都有自己的偏好

下面是一个解释如何生成优先级的示例。每个优先级都保证是唯一的,因为候选ID应该是唯一的(如果遵循RFC)。所以,你永远不应该把事情的轻重缓急联系在一起。优先权较高的优先权会先试用,如果无法与它们建立连接,则使用下一条线路

有关优先权的RFC报价:

使用公式时,代理通过确定 每种候选类型的首选项(服务器反射、对等
反射、中继和主机),并且,当代理是多址的时,
选择其IP地址的首选项。这两个首选项
然后,将它们组合起来,计算候选对象的优先级。那
使用以下公式计算优先级:

类型首选项必须是0到126(含0到126)之间的整数,并且 表示候选类型的首选项(其中
类型有本地、服务器自反、对等自反和中继)。A
126是最高的首选项,0是最低的首选项。设置
值为0表示此类型的候选对象将仅用作
万不得已。所有类型的首选项必须相同
相同类型的候选者,对于
不同类型。同龄人自反候选人的类型偏好
必须高于服务器自反候选者的自反候选者。请注意
根据第4.1.1节的程序收集的候选人将
永远不要成为同龄人自反的候选人;这些类型的候选者是
从ICE执行的连接检查中学习

本地首选项必须是0到65535(含0到65535)之间的整数。 它表示特定IP地址的首选项,从该IP地址
在代理是多宿的情况下,获得候选代理。
65535代表最高偏好,零代表最低偏好。
当只有一个IP地址时,此值应设置为 65535更一般地说,如果特定媒体流的特定组件有多个具有相同特性的候选者 类型的本地首选项必须是唯一的。在此
规范中,这仅适用于多宿主主机。如果主机是
多址因为它是双堆栈,所以本地首选项应该是
设置为RFC中描述的IP地址的优先级值
3484[RFC3484]

组件ID是候选组件的组件ID,必须为 介于1和256之间(含1和256)

您可以看到turn服务器ip和端口显示在中继候选中。以下内容源自和

a=候选:21573335 2 udp 33562367 180.6.6 54278典型继电器raddr 46.2.2.2 rport 38135第0代

它组织每个人根据自己的需求收集的ICE候选项,我认为这是特定于实现的(这意味着FF和Chrome更喜欢不同的候选项类型)。@Benjamintren非常感谢,我没有在RFC中偶然发现这个优先级值。如果你愿意,把这个作为答案,我会接受的。Chrome(Blink)似乎也会根据距离/延迟修改本地偏好。当使用多轮服务器时,较近的服务器通常具有更高的优先级。
    priority = (2^24)*(type preference) +
               (2^8)*(local preference) +
               (2^0)*(256 - component ID)
a=candidate:2157334355<ID> 2<Component> udp<NetType> 33562367<Prioirty> 180.6.6.6<NAT pub IP> 54278<NAT pub Port> typ relay<Means it needs to be relayed through Turn> raddr 46.2.2.2<Relay address of turn> rport 38135<relay port of turn> generation 0