RTCPeerConnection - 表示本地计算机和远程对等方之间的 WebRTC 连接

RTCPeerConnection 接口表示本地计算机和远程对等方之间的 WebRTC 连接。它提供了连接到远程对等点、维护和监视连接以及在不再需要连接时关闭连接的方法。

构造函数

RTCPeerConnection()

返回一个新创建的 RTCPeerConnection,它表示本地设备和远程对等点之间的连接。

静态方法

generateCertificate()

创建一个 X.509 证书及其对应的私钥,返回一个 Promise,一旦生成,它就会解析为新的 RTCCertificate

属性

还从 EventTarget 继承了属性。

canTrickleIceCandidates 只读

返回一个布尔值,指示远程对等方是否可以接受 trickled ICE 候选者

connectionState 只读

返回指示对等连接的当前状态的字符串,包括 newconnectingconnecteddisconnectedfailedclosed

currentLocalDescription 只读

返回一个 RTCSessionDescription 对象,表示自上次此 RTCPeerConnection 完成与远程对等体的协商和连接后,最近成功协商的连接的本地端。 还包括自描述所代表的提议或应答首次实例化以来可能已经由 ICE 代理生成的任何 ICE 候选者的列表。

currentRemoteDescription 只读

返回一个 RTCSessionDescription 对象,描述自上次该 RTCPeerConnection 完成协商并连接到远程对等体后最近成功协商的连接的远程端。此外,还包括自描述所代表的要约或应答首次实例化以来,ICE 代理可能已经生成的任何 ICE 候选者的列表。

iceConnectionState 只读

返回与此 RTCPeerConnection 关联的 ICE 代理的状态字符串。它可以是以下值之一:newcheckingconnectedcompletedfaileddisconnectedclose

iceGatheringState 只读

返回描述连接的 ICE 收集状态的字符串。例如,您可以用于检测 ICE 候选者的收集何时完成。 可能的值为:newgatheringcomplete

localDescription 只读

返回一个 RTCSessionDescription 描述连接本地端的会话。 如果尚未设置,则返回 null

peerIdentity 只读

返回一个 Promise,它解析为一个 RTCIdentityAssertion ,其中包含一个标识远程对等点的字符串。一旦该承诺成功解析,生成的身份就是目标对等身份,并且在连接期间不会更改。

pendingLocalDescription 只读

返回一个RTCSessionDescription对象,描述连接的本地端待定的配置变化。它并不描述当前的连接,而是描述在不久的将来可能存在的连接。

pendingRemoteDescription 只读

返回一个 RTCSessionDescription 对象,描述连接的远程端待定的配置变化。它并不描述当前的连接,而是描述在不久的将来可能存在的连接。

remoteDescription 只读

返回一个 RTCSessionDescription 对象,描述连接的远程端的会话,包括配置和媒体信息。如果尚未设置,则返回 null

sctp 只读

返回一个 RTCSctpTransport 对象,描述发送和接收 SCTP 数据的 SCTP 传输层。如果 SCTP 尚未协商,则此值为 null

signalingState 只读

返回一个字符串,描述在连接或重新连接到另一个对等方时连接本地端的信令进程状态。 它可以是以下值之一:stablehave-local-offerhave-remote-offerhave-local-pranswerhave-remote-pranswerclose

事件处理程序

还从 EventTarget 继承事件处理程序。

onconnectionstatechange

一个事件处理程序,被调用来处理 connectionstatechange 事件。只要连接的聚合状态发生变化,就会触发该事件。聚合状态是连接使用的所有单个网络传输的状态的组合。

ondatachannel

一个事件处理程序,它指定了一个被调用来处理 datachannel 事件的函数。此事件的类型为 RTCDataChannelEvent,当远程对等方调用 createDataChannel()RTCDataChannel 添加到连接时会触发该函数。

onicecandidate

一个事件处理程序,它指定一个被调用来处理 icecandidate 事件的函数。每当本地 ICE 代理需要通过信令服务器向其他对等方传递消息时,就会触发该函数。

onicecandidateerror

一个事件处理程序,它指定一个被调用来处理 icecandidateerror 事件的函数。该事件在 ICE 候选收集过程中发生错误时触发。

oniceconnectionstatechange

一个事件处理程序,它指定一个被调用来处理 iceconnectionstatechange 事件的函数。每当本地 ICE 代理需要通过信令服务器向其他对等方传递消息时,就会触发该事件。

onicegatheringstatechange

一个事件处理程序,它指定一个被调用来处理 icegatheringstatechange 事件的函数。当 ICE 收集状态发生变化时会触发该事件。

onnegotiationneeded

一个事件处理程序,它指定一个被调用来处理 negotiationneeded 事件的函数。当发生需要会话协商的更改时会触发此事件。此协商应该以提供方的身份进行,因为有些会话变化不能以回答方的身份进行协商。

onsignalingstatechange

一个事件处理程序,它指定一个被调用来处理 signalingstatechange 事件的函数。该函数接收 Event 类型的事件对象作为输入;当对等连接的 signalingState 发生变化时触发此事件,这可能是由于调用 setLocalDescription()setRemoteDescription() 而触发的。

ontrack

一个事件处理程序,它指定一个被调用来处理 track 事件的函数。该函数接收 RTCTrackEvent 类型的事件对象作为输入;当新传入的 MediaStreamTrack 被创建并与 RTCRtpReceiver 对象相关联,并被添加到连接上的接收者集合时,触发此事件。

过时的属性

onaddstream

一个事件处理程序,它指定一个函数,该函数被调用来处理过时的 addstream 事件。

onremovestream

一个事件处理程序,它指定一个函数,该函数被调用来处理过时的 removestream 事件。

方法

还从 EventTarget 继承了方法。

addIceCandidate()

RTCPeerConnection 的远程描述中添加一个新的远程候选者,描述了连接远程端的状态。

addTrack()

将新的 MediaStreamTrack 添加到将传输到其他对等点的轨道集。

addTransceiver()

创建一个新的 RTCRtpTransceiver 并将其添加到与连接关联的收发器集合中。 每个收发器代表一个双向流,有一个 RTCRtpSender 和一个 RTCRtpReceiver 与之关联。

close()

关闭当前对等连接。

createAnswer()

在 WebRTC 连接的提议 / 应答协商期间,对从远程对等方收到的提议发起创建 SDP 应答。应答包含关于任何已经连接到会话的媒体、浏览器支持的编解码器和选项以及任何已经收集的 ICE 候选者的信息。

createDataChannel()

开始创建一个与远程对等点链接的新通道,通过该通道可以传输任何类型的数据。这对于反向通道内容很有用,例如图像、文件传输、文本聊天、游戏更新数据包等。

createOffer()

启动 SDP 提议的创建,以启动到远程对等点的新 WebRTC 连接。SDP 提议包括任何已经连接到 WebRTC 会话的 MediaStreamTrack 对象、编解码器和浏览器支持的选项的信息,以及 ICE 代理已经收集的任何候选者的信息,目的是通过信令通道发送给潜在的对等体,以请求连接或更新现有连接的配置。

getConfiguration()

返回一个对象,该对象指示连接的当前配置。

getIdentityAssertion()

启动身份断言的收集,并返回一个 Promise ,它解析为身份断言的字符串。仅当 signalingState 不是 closed 时,它才有效。

getReceivers()

返回一个 RTCRtpReceiver 对象数组,每个对象代表一个 RTP 接收器。

getSenders()

返回一个 RTCRtpSender 对象数组,每个对象代表负责传输一个轨道数据的 RTP 发送者。

getStats()

返回一个 Promise,它解析为整个连接或指定的 MediaStreamTrack 的数据统计。

getTransceivers()

返回用于在连接上发送和接收数据的所有 RTCRtpTransceiver 对象的列表。

removeTrack()

告诉连接的本地端停止从指定轨道发送媒体,而不实际从 getSenders() 报告的发送者列表中删除相应的 RTCRtpSender。如果轨道已经停止,或者不在连接的发送者列表中,则此方法无效。

restartIce()

允许在连接的两端轻松请求重做 ICE 候选集。这通过允许调用者或接收者使用相同的方法来触发 ICE 重新启动来简化过程。

setConfiguration()

根据指定对象中包含的值设置连接的当前配置。这使您可以更改连接使用的 ICE 服务器以及要使用的传输策略。

setIdentityProvider()

将身份提供者 (IdP) 设置为参数中给出的三元组:其名称、用于与其通信的协议和用户名。 协议和用户名是可选的。

setLocalDescription()

更改与连接关联的本地描述。该描述指定了连接本地端的属性,包括媒体格式。它返回一个 Promise,一旦描述被更改,它就会解析。

setRemoteDescription()

将指定的会话描述设置为远程对等方的当前提议或应答。该描述指定了连接的远程端的属性,包括媒体格式。它返回一个 Promise,一旦描述被更改,它就会解析。

过时的方法

addStream()

添加一个 MediaStream 作为本地的音频或视频源。你不应该使用这个过时的方法,而应该对你想发送给远对等方的每个音轨调用一次 addTrack()

createDTMFSender()

创建一个新的 RTCDTMFSender,关联到特定的 MediaStreamTrack,它将能够通过连接发送 DTMF 电话信号 .

getStreamById()

返回具有与本地或远程连接端关联的给定 id 的 MediaStream。此属性已替换为 getSenders()getReceivers() 方法。

removeStream()

移除作为本地音频或视频来源的 MediaStream。由于此方法已过时,您应该改用 removeTrack()

事件

使用 addEventListener() 或通过为此接口的 oneventname 属性分配事件监听器来监听这些事件。

connectionstatechange

RTCPeerConnection 的整体连接状态发生变化时触发。也可以通过 onconnectionstatechange 事件处理程序属处理。

datachannel

当远程对等点向连接添加 RTCDataChannel 时触发。也可通过 ondatachannel 事件处理程序属性处理。

icecandidate

请求将指定的候选传输到远程对等体时触发。也可通过 onicecandidate 事件处理程序属性处理。

icecandidateerror

ICE 候选人收集期间发生错误时触发。该事件描述了错误信息。也可以通过 onicecandidateerror 事件处理程序属性处理。

iceconnectionstatechange

ICE 连接的状态发生变化时触发,例如断开连接时。也可以使用 oniceconnectionstatechange 事件处理程序属性处理。

icegatheringstatechange

ICE 层的收集状态(由 iceGatheringState 反映)发生变化时触发。这表明 ICE 协商是否尚未开始(new)、已开始收集候选(gathering)或已完成(complete)。 也可以使用 onicegatheringstatechange 事件处理程序属性处理。

negotiationneeded

当需要进行 ICE 连接的协商或重新协商时发送;首次打开连接以及需要适应不断变化的网络条件时都可能发生这种情况。接收方应该通过创建一个要约并将其发送给另一个对等方来响应。也可可以使用 onnegotiationneeded 事件处理程序属性来处理。

signalingstatechange

当连接的 ICE 信令状态改变时发送。 也可以通过 onsignalingstatechange 事件处理程序属性处理。

track

在向组成连接的 RTCRtpReceiver 实例之一添加新轨道后发送。也可以使用 ontrack 事件处理程序属性处理。

过时的事件

addstream

当新的 MediaStream 添加到连接时发送。您应该监听 track 事件,而不是监听这个过时的事件。每次 MediaStreamTrack 添加到连接时会触发一次该事件。也可以使用 onaddstream 事件处理程序属性。

removestream

当连接删除 MediaStream 时发送。您应该在每个流上监听 removetrack 事件,而不是监听这个过时的事件。也可以使用 onremovestream 事件处理程序属性。

规范

规范
WebRTC 1.0: Real-Time Communication Between Browsers (WebRTC 1.0) #interface-definition

桌面浏览器兼容性

暂无兼容数据

相关链接