--- 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