# 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 | 基础数据传输已关闭或无法建立。 |