Ter*_*ary 8 javascript stun webrtc turn
分支这个问题WebRTC - 我需要指定多少个STUN/TURN服务器?
当提供多个TURN服务器时,WebRTC如何确定要使用哪些TURN服务器?
每个冰候选人在收集时都会获得优先权.它是两种东西的混合物,我相信每个平台(Chrome,FireFox等)都有自己的偏好.
这是RFC的链接,解释了如何生成优先级.由于候选ID应该是唯一的(如果遵循RFC),每个优先级都保证是唯一的.所以,你永远不应该优先考虑.首先尝试具有较高优先级的那些,如果不能与它们建立连接,则使用下一个在线.
引用RFC关于优先级:
使用公式时,代理通过确定每种候选类型(服务器自反,对等
自反,中继和主机)的首选项来计算优先级,并且当代理是多宿主时,
为其IP地址选择首选项.
然后组合这两个偏好以计算候选者的优先级.该
优先级使用以下公式计算:
priority = (2^24)*(type preference) +
(2^8)*(local preference) +
(2^0)*(256 - component ID)
Run Code Online (Sandbox Code Playgroud)
类型首选项必须是0到126之间的整数,并且表示候选类型的首选项(其中
类型是本地,服务器自反,对等反身和中继).阿
126是最高优先级,而0是最低的.将
值设置为0意味着此类型的候选项将仅用作
最后的手段.类型偏好必须对于
相同类型的所有候选者是相同的,并且对于
不同类型的候选者必须是不同的.对等自反候选者的类型偏好
必须高于服务器自反候选者的类型偏好.请注意,
根据第4.1.1节的程序收集的候选人
永远不会是同伴反身候选人; 这些类型的候选人是
从ICE执行的连通性检查中学习的.本地首选项必须是0到65535之间的整数.
在代理是多宿主的情况下,它表示对获得候选者的特定IP地址的偏好.
65535代表最高优先级,零代表最低优先级.
当只有一个IP地址时,该值应该设置为65535.更一般地说,如果特定媒体流的特定组件有多个候选者具有相同的类型,则本地优先级必须对每个都是唯一的.在本
规范中,这仅适用于多宿主主机.如果主机是
多宿主的,因为它是双栈,则本地首选项应该
设置为等于RFC
3484 [RFC3484]中描述的IP地址的优先级值.组件ID是候选组件的组件ID,必须介于1和256之间.
您可以看到转弯服务器的IP和端口显示在中继候选中.以下内容源自 RFC第82页和webrtc hacks.
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2546 次 |
| 最近记录: |