RTCConfiguration
原文地址:https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration
该RTCConfiguration代码字典用于为RTCPeerConnection提供配置选项。在实例化连接时,或者在使用RTCPeerConnection.getConfiguration()和RTCPeerConnection.setConfiguration()方法时可以将其传递给构造函数,这些方法允许在建立连接后检查和更改配置。
选项包括ICE服务器和传输设置以及身份信息。
属性:
bundlePolicy 可选的
当远程对等端与SDP BUNDLE标准不兼容时,该属性指定如何处理候选项的协商。这必须是RTCBundlePolicy列举的其中一个值。如果该值不包括在代码字典中,则假定"balanced"。
certificates 可选的
一个Array类型的对象RTCCertificate,由用于认证的连接中使用。如果未指定此属性,每个RTCPeerConnection实例自动生成一组证书。虽然给定连接只能使用一个证书,但为多个算法提供证书可能会提高在某些情况下成功连接的可能性。有关其他信息,请参阅下面的使用证书。
此配置选项在首次指定后无法更改; 一旦证书被设置,这个属性将在以后的RTCPeerConnection.setConfiguration()调用中被忽略。
iceCandidatePoolSize 可选的
一个无符号的16位整数值,用于指定预获取的ICE候选池的大小。默认值为0(意味着不会发生候选预获取)。您可能发现在某些情况下,在开始尝试连接之前,允许ICE代理程序开始获取ICE候选项,可以更快地建立连接,以便在RTCPeerConnection.setLocalDescription()被调用时已经可以进行检查。
更改ICE候选池的大小可能会触发ICE收集的开始。
iceServers 可选的
一组RTCIceServer对象,每个对象描述也许是ICE代理使用的一个服务器; 这些通常是STUN和/或TURN服务器。如果没有指定,ICE代理可以选择使用自己的ICE服务器; 否则,连接会试着不使用STUN或TURN服务器,这限制了与本地对等端的连接。
iceTransportPolicy 可选的
目前的ICE传输政策;这必须是RTCIceTransportPolicy列举中的值之一。如果未指定,则假定"all"。
peerIdentity 可选的
DOMString为RTCPeerConnection指定了目标对等端的身份。如果设置此值(默认为null),RTCPeerConnection则不能连接到远程对等端,除非使用给定的名称成功地进行身份验证。
rtcpMuxPolicy 可选的
收集ICE候选项时使用的RTCP多路复用策略,以支持非多路复用RTCP。该值必须是RTCRtcpMuxPolicy列举的值之一。默认是"require"。
常量:
RTCBundlePolicy枚举
如果远程对等端与字符串常量SDP标准BUNDLE针对单个传输链路上捆绑的多个媒体流不兼容,RTCBundlePolicy枚举定义了用于请求收集ICE候选项特定策略。
在技术术语中,BUNDLE允许两个对等体之间的所有媒体流在单个5元组中;也就是说,从一个对等体上的相同IP和端口到另一个对等体上的相同IP和端口,使用相同的传输协议。
常量 | 描述 |
"balanced" | 在BUNDLE感知连接上,ICE代理应收集所有正在使用的媒体类型(音频,视频和数据)的候选项。否则,ICE代理商只用在单独的传输上协商一个音视频轨道。 |
"max-compat" | ICE代理应收集每个轨道的候选人,不是BUNDLE兼容的连接用单独的传输协商所有媒体轨道。 |
"max-bundle" | ICE代理人应该为一个轨道收集候选人。如果连接不与BUNDLE兼容,那么ICE代理应该只协商一个媒体轨道。 |
|
|
RTCIceTransportPolicy枚举
该RTCIceTransportPolicy枚举定义了字符串常量,这些字符串常量用于限制在连接过程中ICE候选项的传输策略。
常量 | 描述 |
"all" | 将会考虑所有ICE候选项。 |
"public" | 只考虑具有公共IP地址的ICE候选项。从规范中删除了2016年5月13日的工作草案。 |
"relay" | 只考虑通过TURN服务器传递IP地址的ICE候选项。 |
RTCRtcpMuxPolicy枚举
该RTCRtcpMuxPolicy枚举定义了字符串常量,指定了收集那些支持非复用RTCP的ICE候选项。
常量 | 描述 |
"negotiate" | 指示ICE代理收集RTP和RTCP候选项。如果远程对等端可以复用RTCP,则RTCP候选项在相应的RTP候选项之上被复用。否则,RTP和RTCP候选者分别返回。 |
"relay" | 告诉ICE代理仅收集RTP候选者,并在其上面复用RTCP。如果远程对等端不支持RTCP复用,则会话协商失败。 |
使用证书:
当您希望用RTCPeerConnection使用自己提供的证书而不是RTCPeerConnection自动生成的证书时,您可以通过调用RTCPeerConnection.generateCertificate()来实现。
此属性支持提供多个证书,因为给定的DTLS连接仅使用一个证书。提供多个证书可支持多种加密算法。RTCPeerConnection的执行会选择使用和远程对等端同样支持的证书上的算法,这在DTLS握手期间确定。
如果您不提供证书,新的证书会自动生成。提供自己的证书有一个明显好处是身份密钥连续性——如果您对后续呼叫使用相同的证书,则远程对等端可以告诉您是同一个呼叫者。这也避免了生成新密钥的成本。
例子:
下面的configuration配置了两个ICE服务器。第一个,stun:stun.services.mozilla.com需要身份验证,所以提供了用户名和密码。第二个服务器有两个URLs:stun:stun.example.com 和 stun:stun-1.example.com。
var configuration= { iceServers: [{
urls: "stun:stun.services.mozilla.com",
username: "louis@mozilla.com",
credential: "webrtcdemo"
}, {
urls: ["stun:stun.example.com", "stun:stun-1.example.com"]
}]};
var pc= new RTCPeerConnection(configuration);