RTCPeerConnection API

RTCPeerConnection 允许两个用户直接进行浏览器之间的通信。

Configuration

表A-1 RTCConfiguration 子典成员

Name Type Default Description
iceServers sequence<RTCIceServer> 包含可供 ICE 使用的服务器(例如 STUN 和 TURN 服务器)的 URI 的数组。
iceTransports RTCIceTransports all 表示允许 ICE 引擎使用的候选对象。
requestIdentity RTCIdentityOption ifconfigured 请参阅 RTCOfferAnswerOptions 字典的 requestIdentity 成员。

表A-2 RTCIceServer 子典成员

Name Type Description
credential DOMString 如果此 RTCIceServer 对象表示 TURN 服务器,则此属性指定用于该 TURN 服务器的凭据
urls (DOMString or sequence<DOMString>) [STUN-URI] 和 [TURN-URI] 中定义的 STUN 或 TURN URI 或其他 URI 类型。
username DOMString 如果此 RTCIceServer 对象表示 TURN 服务器,则此属性指定用于该 TURN 服务器的用户名。

表A-3 RTCIceTransports 枚举值

Name Description
none ICE 引擎此时不得发送或接收任何数据包。
relay ICE 引擎必须仅使用媒体中继候选者,例如通过 TURN 服务器的候选者。 在某些用例中,这可以用来减少 IP 地址的泄漏。
all 指定此值时,ICE 引擎可以使用任何类型的候选项。

Constructor

这是RTCPeerConnection构造函数:

  • RTCPeerConnection(configuration)

这是 RTCPeerConnection 方法:

  • createOffer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional RTCOfferOptions options)
  • createAnswer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional RTCOfferAnswerOptions options)
  • setLocalDescription(RTCSessionDescription description, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback)
  • setRemoteDescription(RTCSessionDescription description, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback)
  • updateIce(RTCConfiguration configuration)
  • addIceCandidate(RTCIceCandidatecandidate, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback)
  • getConfiguration()
  • getLocalStreams()
  • getRemoteStreams()
  • getStreamById(DOMString streamId)
  • addStream(MediaStream stream)
  • removeStream(MediaStream stream)
  • close()

属性

表A-4 RTCPeerConnection 属性

Access property Type Name
readonly RTCSessionDescription remoteDescription
readonly RTCSignalingState signalingState
readonly RTCIceGatheringState iceGatheringState
readonly RTCIceConnectionState iceConnectionState
EventHandler onnegotiationneeded
EventHandler onicecandidate
EventHandler onsignalingstatechange
EventHandler onaddstream
EventHandler onremovestream
EventHandler oniceconnectionstatechange

状态定义

表A-5 RTCSignalingState

Name Description
stable 没有正在进行的 offer/answer 交换。 这也是初始状态,在这种情况下,本地和远程描述为空。
have-local-offer 类型为 offer 的本地描述已成功应用。
have-remote-offer 类型为 offer 的远程描述已成功应用。
have-local-pranswer 类型 offer 的远程描述已成功应用,类型 pranswer 的本地描述已成功应用。
have-remote-pranswer 类型 offer 的本地描述已成功应用,类型 pranswer 的远程描述已成功应用。
closed 连接已关闭。

表A-6 RTCIceGatheringState

Value Description
new 该对象刚刚创建,尚未建立任何网络。
gathering ICE 引擎正在收集此 RTCPeerConnection 的候选对象。
complete ICE 引擎已完成收集。 添加新接口或新 TURN 服务器之类的事件将使状态返回到收集状态。

表A-7 RTCIceConnectionState

Value Description
new ICE 代理正在收集地址和/或等待提供远程候选者。
checking ICE 代理已在至少一个组件上接收到远程候选,并且正在检查候选对,但尚未找到连接。 除了检查外,它可能仍在收集中。
connected ICE 代理已找到所有组件的可用连接,但仍在检查其他候选对以查看是否存在更好的连接。 它可能仍在聚集。
completed ICE 代理已完成收集和检查,并找到了所有组件的连接。
failed ICE 代理已完成所有候选对的检查,未能找到至少一个组件的连接。可能已为某些组件找到连接。
disconnected 一个或多个组件的活动性检查失败。 这比失败更具攻击性,并且可能在不稳定的网络上间歇性触发(并自行解决而不采取措施)。
closed ICE 代理已关闭,并且不再响应 STUN 请求。