# WebRTC 1.0 APIs

本附录概述了 W3C WebRTC API 。

# 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 请求。

# Peer-to-Peer Data API

点对点数据 API 使 Web 应用程序可以点对点发送和接收通用应用程序数据。 用于发送和接收数据的 API 对 WebSocket 的行为进行建模。

  • Method: RTCDataChannel

createDataChannel([TreatNullAs=EmptyString] DOMString label, optionalRTCDataChannelInit dataChannelDict)

  • Attribute: EventHandler

ondatachannel

# 接口 RTCDataChannel 接口方法

表A-8 方法

Return type Description
void close()
void send(DOMString data)
void send(Blob data)
void send(ArrayBuffer data)
void send(ArrayBufferView data)

# RTCDataChannel 接口属性

表A-9 属性

Access property Type Name
readonly DOMString label
readonly boolean ordered
readonly unsigned? maxRetransmitTime
readonly unsigned? maxRetransmits
readonly DOMString protocol
readonly attribute negotiated
readonly unsigned shortid
readonly RTCDataChannelState readyState
readonly unsigned long bufferedAmount
EventHandler onopen
EventHandler onerror
EventHandler onclose
EventHandler onmessage
DOMString binaryType

表A-10 RTCDataChannelInit 字典

Name Type Description
id unsigned short 覆盖此通道的 ID 的默认选择。
maxRetransmitTime unsigned short 限制如果未成功传送通道将重新传输数据的时间。
maxRetransmits unsigned short 限制如果传输失败则通道将重新传输数据的次数。
negotiated boolean 默认为 false。 默认值 false 指示用户代理宣布带内通道,并指示另一个对等方调度相应的 RTCDataChannel 对象。 如果设置为 true,则由应用程序来协商通道并创建具有与另一个对等方相同的 ID 的 RTCDataChannel 对象。
ordered boolean 默认为 true。 如果设置为 false,则允许数据无序发送。 默认值 true 保证数据将按顺序传递。
protocol DOMString 默认为 ""。 此通道使用的子协议名称

表A-11 RTCDataChannelState 枚举值

Value Description
connecting 用户代理正在尝试建立基础数据传输。 这是使用 createDataChannel() 创建的 RTCDataChannel 对象的初始状态。
open 建立了基础数据传输,并且可以进行通信。 这是作为 RTCDataChannelEvent 的一部分调度的 RTCDataChannel 对象的初始状态。
closing 关闭基础数据传输的过程已开始。
closed 基础数据传输已关闭或无法建立。