--- title: RTCDataChannel slug: Web/API/RTCDataChannel translation_of: Web/API/RTCDataChannel ---
{{APIRef("WebRTC")}}{{SeeCompatTable}}
RTCDataChannel接口代表在两者之间建立了一个双向数据通道的连接。
可以用{{domxref("RTCDataChannel.createDataChannel()")}}或者在现有的 {{domxref("RTCPeerConnection")}}上用 {{domxref("RTCDataChannelEvent")}}类型的 {{event("datachannel")}} 事件接收,创建出 RTCDataChannel类型的对象。
这个API在Gecko中被称作DataChannel而不是标准的'RTCDataChannel'。
"connecting"
该状态表示底层链路还未建立和激活,该状态还是由{{domxref("RTCPeerConnection.createDataChannel()")}}生成的datachannel初始状态。"open"
该状态表示底层链路已经连接成功并且运行。这个状态还是由{{domxref("RTCDataChannelEvent")}}分发的datachannel的初始状态。 "closing"
该状态表示底层链路已经在关闭的过程中。该状态下将不会接受新的发送任务,但是缓冲队列中的消息还是会被继续发送或者接收。"closed"
该状态表示底层链路已经完全被关闭(或者无法处于established状态)。返回一个unsigned long
,表示缓冲队列中等待发送的字节数。这些数据是通过{{domxref("RTCDataChannel.send()")}}添加进缓冲队列但还未被发送的数据请求。注意:就算channel处于closed
状态,队列中的缓存还会保持。
是一个{{domxref("DOMString")}} 类型,表示由链路发送的二进制数据的类型。该项的值应该为"blob"
或者"arraybuffer"
,默认值为"blob"
。当值为"blob"
的时候,使用{{domxref("Blob")}}对象,当值为"arraybuffer"
时,使用{{domxref("ArrayBuffer")}}对象
unsigned short
类型,表示不可靠模式下的消息发送允许时间长度,单位为毫秒。unsigned short
类型,表示不可靠模式下消息允许尝试重发的最大次数。关闭channel的方法。这个关闭动作不是直接生效的。这个方法会将channel的{{domxref("RTCDataChannel.readyState", "state")}} 属性设置为"closing"
状态,在消息队列中的消息全部发送完毕之后,channel才会被关闭。
var pc = new RTCPeerConnection(); var dc = pc.createDataChannel("my channel"); dc.onmessage = function (event) { console.log("received: " + event.data); }; dc.onopen = function () { console.log("datachannel open"); }; dc.onclose = function () { console.log("datachannel close"); };
Specification | Status | Comment |
---|---|---|
{{ SpecName('WebRTC 1.0', '#idl-def-RTCDataChannel', 'RTCDataChannel') }} | {{ Spec2('WebRTC 1.0') }} | Initial specification. |
{{ CompatibilityTable() }}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown }} [1] | {{ CompatNo() }} | {{ CompatVersionUnknown() }} | {{ CompatUnknown() }} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatNo() }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} |
[1] The interface is called DataChannel
and not RTCDataChannel