RTCPeerConnection - 表示本地计算机和远程对等方之间的 WebRTC 连接
RTCPeerConnection
接口表示本地计算机和远程对等方之间的 WebRTC 连接。它提供了连接到远程对等点、维护和监视连接以及在不再需要连接时关闭连接的方法。
构造函数
RTCPeerConnection()
返回一个新创建的 RTCPeerConnection
,它表示本地设备和远程对等点之间的连接。
静态方法
generateCertificate()
创建一个 X.509 证书及其对应的私钥,返回一个 Promise
,一旦生成,它就会解析为新的 RTCCertificate
。
属性
还从 EventTarget
继承了属性。
canTrickleIceCandidates
只读
返回一个布尔值,指示远程对等方是否可以接受 trickled ICE 候选者。
connectionState
只读
返回指示对等连接的当前状态的字符串,包括 new
,connecting
,connected
,disconnected
,failed
或 closed
。
currentLocalDescription
只读
返回一个 RTCSessionDescription
对象,表示自上次此 RTCPeerConnection
完成与远程对等体的协商和连接后,最近成功协商的连接的本地端。 还包括自描述所代表的提议或应答首次实例化以来可能已经由 ICE 代理生成的任何 ICE 候选者的列表。
currentRemoteDescription
只读
返回一个 RTCSessionDescription
对象,描述自上次该 RTCPeerConnection
完成协商并连接到远程对等体后最近成功协商的连接的远程端。此外,还包括自描述所代表的要约或应答首次实例化以来,ICE 代理可能已经生成的任何 ICE 候选者的列表。
iceConnectionState
只读
返回与此 RTCPeerConnection
关联的 ICE 代理的状态字符串。它可以是以下值之一:new
、checking
、connected
、completed
、failed
、disconnected
或 close
。
iceGatheringState
只读
返回描述连接的 ICE 收集状态的字符串。例如,您可以用于检测 ICE 候选者的收集何时完成。 可能的值为:new
、gathering
或 complete
。
localDescription
只读
返回一个 RTCSessionDescription
描述连接本地端的会话。 如果尚未设置,则返回 null
。
peerIdentity
只读
返回一个 Promise
,它解析为一个 RTCIdentityAssertion
,其中包含一个标识远程对等点的字符串。一旦该承诺成功解析,生成的身份就是目标对等身份,并且在连接期间不会更改。
pendingLocalDescription
只读
返回一个RTCSessionDescription
对象,描述连接的本地端待定的配置变化。它并不描述当前的连接,而是描述在不久的将来可能存在的连接。
pendingRemoteDescription
只读
返回一个 RTCSessionDescription
对象,描述连接的远程端待定的配置变化。它并不描述当前的连接,而是描述在不久的将来可能存在的连接。
remoteDescription
只读
返回一个 RTCSessionDescription
对象,描述连接的远程端的会话,包括配置和媒体信息。如果尚未设置,则返回 null
。
sctp
只读
返回一个 RTCSctpTransport
对象,描述发送和接收 SCTP 数据的 SCTP 传输层。如果 SCTP 尚未协商,则此值为 null
。
signalingState
只读
返回一个字符串,描述在连接或重新连接到另一个对等方时连接本地端的信令进程状态。 它可以是以下值之一:stable
、have-local-offer
、have-remote-offer
、have-local-pranswer
、have-remote-pranswer
或 close
。
事件处理程序
还从 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 |
桌面浏览器兼容性
暂无兼容数据