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 代理同时收集 RTP 和 RTCP 候选者。如果远程对等方可以复用 RTCP,则将 RTCP 候选对象复用到相应的 RTP 候选对象之上。否则,将分别返回 RTP 和 RTCP 候选者。 |
"require" |
告诉 ICE 代理仅收集用于 RTP 的 ICE 候选者,并在它们上面多路复用 RTCP。如果远程对等点不支持 RTCP 复用,则会话协商将失败。 |
实例
下面的配置建立两个 ICE 服务器。第一个名为 stun:stun.services.example.com
,需要进行身份验证,因此提供了用户名和密码。第二个服务器具有两个 URL:stun:stun.example.com
和 stun: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 的定义 |
候选推荐 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 23 | ≤79 | 未知 | 不支持 | 支持 | 未知 |
bundlePolicy | 23 | ≤79 | 未知 | 不支持 | 支持 | 未知 |
certificates | 23 | ≤79 | 未知 | 不支持 | 支持 | 未知 |
iceCandidatePoolSize | 23 | ≤79 | 未知 | 不支持 | 支持 | 未知 |
iceServers | 23 | ≤79 | 未知 | 不支持 | 支持 | 未知 |
iceTransportPolicy | 23 | ≤79 | 未知 | 不支持 | 支持 | 未知 |
peerIdentity | 23 | ≤79 | 未知 | 不支持 | 支持 | 未知 |
rtcpMuxPolicy | 571 | ≤791 | 未知 | 不支持 | 441 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 57 | 未知 | 未知 | 未知 | 支持 | 未知 |
bundlePolicy | 支持 | 57 | 未知 | 未知 | 未知 | 支持 | 未知 |
certificates | 支持 | 57 | 未知 | 未知 | 未知 | 支持 | 未知 |
iceCandidatePoolSize | 支持 | 57 | 未知 | 未知 | 未知 | 支持 | 未知 |
iceServers | 支持 | 57 | 未知 | 未知 | 未知 | 支持 | 未知 |
iceTransportPolicy | 支持 | 57 | 未知 | 未知 | 未知 | 支持 | 未知 |
peerIdentity | 支持 | 57 | 未知 | 未知 | 未知 | 支持 | 未知 |
rtcpMuxPolicy | 支持 | 57 | 未知 | 未知 | 未知 | 支持 | 未知 |
1. rtcpMuxPolicy
的默认值为 require