RTCPeerConnection()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
RTCPeerConnection()
构造函数返回一个新建的 RTCPeerConnection
实例,它代表了本地端机器与远端机器的一条连接。
语法
new RTCPeerConnection()
new RTCPeerConnection(configuration)
参数
configuration
可选-
一个对象,用于提供配置新连接的选项:
bundlePolicy
可选-
指定当远程对等点与 SDP BUNDLE 标准不兼容时,应如何处理候选的协商。如果远程端点可以感知 BUNDLE,则在协商完成时,所有媒体轨道和数据通道都将捆绑到单个传输上,而不管使用何种策略,并且最初创建的任何多余传输都将在此时关闭。
用技术术语来说,BUNDLE 允许两个对等点之间的所有媒体流流经单个 5 元组;也就是说,使用相同的传输协议从一个对等点的单个 IP 和端口到另一个对等点的单个 IP 和端口。
如果假定为不平衡(
balanced
),这必须是以下字符串值之一:balanced
-
ICE 代理最初为每一种内容类型(音频、视频、数据通道)创建一个
RTCDtlsTransport
。如果远程端点无法感知 BUNDLE,那么每一个 DTLS 传输用于处理一种数据类型的通信。 max-compat
-
ICE 代理最初为每个媒体轨道创建一个
RTCDtlsTransport
,对数据通道则创建一个单独的传输。如果远程端点无法感知 BUNDLE,那么对于所有的内容都会协商一个单独的 DTLS 传输。 max-bundle
-
ICE 代理最初仅创建一个
RTCDtlsTransport
来承载所有的RTCPeerConnection
的数据。如果远程端点无法感知 BUNDLE,那么仅会协商一个轨道而忽略其余的轨道。
certificates
可选-
一个由
RTCCertificate
对象组成的数组,用于连接的身份验证。如果未指定该属性,则会为每一个RTCPeerConnection
实例自动创建一组证书。尽管一个给定的连接只使用一个证书,但提供多个证书可以支持多种算法,从而提高某些情况下的连接成功的机率。参见使用证书以了解更多信息。备注: 此配置选项在首次指定后便不能更改;一旦设置了证书,此属性将在之后调用
RTCPeerConnection.setConfiguration()
时被忽略。 iceCandidatePoolSize
可选-
一个无符号 16 位整数,其指定了预获取的 ICE 候选池的大小。其默认值为 0(表示不会发生候选的预获取)。你可能会发现,在某些情况下,通过在尝试建立连接前允许 ICE 代理预获取 ICE 候选,可以更快地建立连接,以在调用
RTCPeerConnection.setLocalDescription()
时,已可以检查连接。备注: 改变 ICD 候选池的大小可能会触发 ICE 收集的开始。
iceServers
可选-
一个由
RTCIceServer
对象组成的数组,每个对象描述一个可能被 ICE 代理使用的服务器;这些通常是 STUN 或 TURN 服务器。如果未指定,则将在没有可用的 STUN 或 TURN 服务器的情况下进行连接尝试,这将连接限制为本地对等点。 iceTransportPolicy
可选-
当前的 ICE 传输策略;如果未指定策略,则默认使用
all
策略,允许考虑所有的候选。可能的值有:"all"
-
所有的 ICE 候选都会被考虑。
"public"
已弃用-
只有拥有公共 IP 地址的 ICE 候选才会被考虑。在 2016 年 5 月 13 日的规范工作草案中被移除。
"relay"
-
只有 IP 地址被中继的 ICE 候选,例如那些通过 STUN 或 TURN 服务器传递的,才会被考虑。
peerIdentity
可选-
一个字符串,用于指定
RTCPeerConnection
目标对等点的标识。如果设置了该值(其默认为null
),则在成功验证远程对等点的身份为给定的名称之前,RTCPeerConnection
不会与其建立连接。 rtcpMuxPolicy
可选-
收集 ICE 候选时使用的 RTCP mux 策略,以支持非复用的 RTCP。可能的值有:
返回值
一个新建的 RTCPeerConnection
对象,如果指定了配置信息(configuration
),它按照指定配置进行配置,否则,它将按照基本配置进行配置。
使用证书
当你希望为一个 RTCPeerConnection
使用自己的证书,而不是让 RTCPeerConnection
自动生成,你可以通过调用静态函数 RTCPeerConnection.generateCertificate()
来实现。
certificates
属性值在首次指定后便无法更改。如果在传递到调用的 setConfiguration()
函数的配置信息中包含了该属性,则该属性会被忽略。
该属性支持提供多个证书,因为即使给定的 DTLS 连接仅使用一个证书,提供多个证书也可以支持多种加密算法。RTCPeerConnection
的实现会根据其和远程的对等点支持的算法来选择要使用的证书,这在 DTLS 握手期间确定。
如果你不提供证书,则会自动生成新的证书。提供你自己的证书有一个明显的好处:身份密钥的连续性——如果你对后续的调用使用相同的证书,则远程对等点可以告诉你是同一个调用者。这也避免生成新密钥的成本。
规范
Specification |
---|
WebRTC: Real-Time Communication in Browsers # dom-peerconnection |
浏览器兼容性
BCD tables only load in the browser