RTCConfiguration - 用于提供 RTCPeerConnection 的配置选项

RTCConfiguration 字典用于提供 RTCPeerConnection 的配置选项。可以在实例化连接时将其传递到构造函数中,或者与 RTCPeerConnection.getConfiguration()RTCPeerConnection.setConfiguration() 方法一起使用,从而可以检查建立连接后更改配置。

这些选项包括 ICE 服务器和传输设置以及身份信息。

属性

bundlePolicy 可选

指定当远程对等点与 SDP BUNDLE 标准不兼容时,如何处理候选者的协商。它必须是枚举RTCBundlePolicy 的值之一。如果字典中未包含此值,则假定为 balanced

certificates 可选

一个包含 RTCCertificate 对象的数组,连接时用于身份验证。如果未指定此属性,则将为每个 RTCPeerConnection 实例自动生成一组证书。尽管给定连接仅使用一个证书,但是在某些情况下为多种算法提供证书可能会提高成功连接的几率。有关更多信息,请参见使用证书

首次指定后无法更改此配置选项。设置证书后,以后再调用 RTCPeerConnection.setConfiguration() 时,将忽略此属性。

iceCandidatePoolSize 可选

一个无符号的 16 位整数值,它指定预取的 ICE 候选者池的大小。默认值为 0(表示不会进行任何候选预取)。在某些情况下,您可能会发现,通过允许 ICE 代理在开始尝试进行连接之前就开始获取 ICE 候选者,可以更快地建立连接,因此当调用 RTCPeerConnection.setLocalDescription() 时,这些候选对象已经可供检查。

更改 ICE 候选库的大小可能会触发 ICE 开始收集。

iceServers 可选

一个 RTCIceServer 对象的数组,每个对象描述一个可由 ICE 代理使用的服务器;这些通常是 STUN 和 / 或 TURN 服务器。如果未指定,则将在没有可用的 STUN 或 TURN 服务器的情况下进行连接尝试,这将连接限制为本地对等方。

iceTransportPolicy 可选

当前的 ICE 传输策略;这必须是 RTCIceTransportPolicy 枚举中的值之一。如果未指定策略,则默认情况下采用 all,从而考虑所有候选者。relay 值将候选者限制为通过其他服务器(例如 STUN 或 TURN 服务器)中继的候选者。

peerIdentity 可选

一个 DOMString,它指定了 RTCPeerConnection 的目标对等身份。如果设置了该值(默认为 null),则 RTCPeerConnection 将不会连接到远程对等方,除非它可以使用给定名称成功进行身份验证。

rtcpMuxPolicy 可选

收集 ICE 候选者时要使用的 RTCP 多路复用策略。用于支持非复用的 RTCP。该值必须是 RTCRtcpMuxPolicy 枚举中的值之一。默认值为 "require"

常量

RTCBundlePolicy 枚举

RTCBundlePolicy 枚举定义了字符串常量,用于在远程对等点不支持 BUNDLE 感知的情况下请求用于收集 ICE 候选者的特定策略(与 SDP BUNDLE 标准兼容,用于在单个传输链路上捆绑多个媒体流)。所有浏览器实现都是 BUNDLE 感知的。

如果远程端点支持 BUNDLE 感知,则在协商完成时,无论使用何种策略,所有媒体轨道和数据通道都将捆绑到一个传输中,并且最初创建的所有多余传输都在该时间关闭。

注意: 从技术上讲,BUNDLE 使两个对等点之间的所有媒体流都流经单个 5 元组;也就是说,使用相同的传输协议,从一个对等方的单个 IP 和端口到另一个对等方的单个 IP 和端口。

常量 描述
"balanced" ICE 代理最初为添加的每种内容类型(音频,视频和数据通道)创建一个 RTCDtlsTransport。如果远程终结点不支持 BUNDLE,则每个 DTLS 传输将处理一种类型数据的所有通信。
"max-compat" ICE 代理最初为每个媒体轨道创建一个 RTCDtlsTransport,并为数据通道创建一个单独的 RTCDtlsTransport。如果远程端点不支持 BUNDLE,则在这些单独的 DTLS 传输上协商所有内容。
"max-bundle" ICE 代理最初仅创建一个 RTCDtlsTransport 来承载所有 RTCPeerConnection 数据。如果远程端点不支持 BUNDLE,则仅协商单个轨道,其余轨道将被忽略。

RTCIceTransportPolicy 枚举

RTCIceTransportPolicy 枚举定义了字符串常量,可用于限制连接过程中要考虑的 ICE 候选者的传输策略。

常量 描述
"all" 将考虑所有 ICE 候选者。
"public" 仅考虑具有公共 IP 地址的 ICE 候选者。 从规范的 2016 年 5 月 13 日工作草案中删除。
"relay" 仅考虑 IP 地址正在中继的 ICE 候选对象,例如通过 TURN 服务器传递的 IP 候选对象。

RTCRtcpMuxPolicy 枚举

RTCRtcpMuxPolicy 枚举定义字符串常量,该字符串常量指定收集哪些 ICE 候选对象以支持非多路复用 RTCP。

常量 描述
"negotiate" 指示 ICE 代理同时收集 RTPRTCP 候选者。如果远程对等方可以复用 RTCP,则将 RTCP 候选对象复用到相应的 RTP 候选对象之上。否则,将分别返回 RTP 和 RTCP 候选者。
"require" 告诉 ICE 代理仅收集用于 RTP 的 ICE 候选者,并在它们上面多路复用 RTCP。如果远程对等点不支持 RTCP 复用,则会话协商将失败。

实例

下面的配置建立两个 ICE 服务器。第一个名为 stun:stun.services.example.com,需要进行身份验证,因此提供了用户名和密码。第二个服务器具有两个 URL:stun:stun.example.comstun:stun-1.example.com

var configuration = { iceServers: [{
                          urls: "stun:stun.services.example.com",
                          username: "louis@example.com", 
                          credential: "webrtcdemo"
                      }, {
                          urls: ["stun:stun.example.com", "stun:stun-1.example.com"]
                      }]
};

var pc = new RTCPeerConnection(configuration);

规范

规范 状态 备注
WebRTC 1.0: Real-time Communication Between Browsers
RTCConfiguration 的定义
候选推荐 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持23≤79 未知 不支持 支持 未知
bundlePolicy23≤79 未知 不支持 支持 未知
certificates23≤79 未知 不支持 支持 未知
iceCandidatePoolSize23≤79 未知 不支持 支持 未知
iceServers23≤79 未知 不支持 支持 未知
iceTransportPolicy23≤79 未知 不支持 支持 未知
peerIdentity23≤79 未知 不支持 支持 未知
rtcpMuxPolicy571≤791 未知 不支持441 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持57 未知 未知 未知 支持 未知
bundlePolicy 支持57 未知 未知 未知 支持 未知
certificates 支持57 未知 未知 未知 支持 未知
iceCandidatePoolSize 支持57 未知 未知 未知 支持 未知
iceServers 支持57 未知 未知 未知 支持 未知
iceTransportPolicy 支持57 未知 未知 未知 支持 未知
peerIdentity 支持57 未知 未知 未知 支持 未知
rtcpMuxPolicy 支持57 未知 未知 未知 支持 未知

1. rtcpMuxPolicy 的默认值为 require