The RTCDataChannel
interface represents a network channel which can be used for bidirectional peer-to-peer transfers of arbitrary data. Every data channel is associated with an RTCPeerConnection
, and each peer connection can have up to a theoretical maximum of 65,534 data channels (the actual limit may vary from browser to browser).
To create a data channel and ask a remote peer to join you, call the RTCPeerConnection
's createDataChannel()
method. The peer being invited to exchange data receives a datachannel
event (which has type RTCDataChannelEvent
) to let it know the data channel has been added to the connection.
Also inherits properties from: EventTarget
binaryType
binaryType
on the RTCDataChannel
interface is a DOMString
which specifies the type of JavaScript object which should be used to represent binary data received on the RTCDataChannel
. Values allowed by the WebSocket.binaryType
property are also permitted here: "blob"
if Blob
objects are being used or "arraybuffer"
if ArrayBuffer
objects are being used. The default is "blob"
.bufferedAmount
Read only
RTCDataChannel
property bufferedAmount
returns the number of bytes of data currently queued to be sent over the data channel.bufferedAmountLowThreshold
RTCDataChannel
property bufferedAmountLowThreshold
is used to specify the number of bytes of buffered outgoing data that is considered "low." The default value is 0.id
Read only
RTCDataChannel
property id
returns an ID number (between 0 and 65,534) which uniquely identifies the RTCDataChannel
.label
Read only
RTCDataChannel
property label
returns a DOMString
containing a name describing the data channel. These labels are not required to be unique.maxPacketLifeTime
Read only
RTCDataChannel
property maxPacketLifeTime
returns the amount of time, in milliseconds, the browser is allowed to take to attempt to transmit a message, as set when the data channel was created, or null
.maxRetransmits
Read only
RTCDataChannel
property maxRetransmits
returns the maximum number of times the browser should try to transmit a message before giving up when in unordered mode, as set when the data channel was created, or null
, which indicates that there is no maximum.negotiated
Read only
RTCDataChannel
property negotiated
indicates whether the RTCDataChannel
's connection was negotiated by the Web app (true
) or by the WebRTC layer (false
). false
ordered
Read only
RTCDataChannel
property ordered
indicates whether or not the data channel guarantees in-order delivery of messages; the default is true
, which indicates that the data channel is indeed ordered.protocol
Read only
RTCDataChannel
property protocol
returns a DOMString
containing the name of the subprotocol in use. If no protocol was specified when the data channel was created, then this property's value is "" (the empty string).readyState
Read only
RTCDataChannel
property readyState
returns an enum of type RTCDataChannelState
which indicates the state of the data channel's underlying data connection.reliable
RTCDataChannel
property reliable
indicates whether or not the data channel is reliable.stream
RTCDataChannel
property stream
returns an ID number (between 0 and 65,535) which uniquely identifies the RTCDataChannel
.Also inherits event handlers from: EventTarget
onbufferedamountlow
RTCDataChannel.onbufferedamountlow
property is an EventHandler
which specifies a function the browser calls when the bufferedamountlow
event is sent to the RTCDataChannel
. This event, which is represented by a simple Event
object, is sent when the amount of data buffered to be sent falls to or below the threshold specified by the channel's bufferedAmountLowThreshold
.onclose
RTCDataChannel.onclose
property is an EventHandler
which specifies a function to be called by the browser when the close
event is received by the RTCDataChannel
. This is a simple Event
which indicates that the data channel has closed down.onerror
RTCDataChannel.onerror
property is an EventHandler
which specifies a function to be called when the error
event is received. When an error occurs on the data channel, the function receives as input an ErrorEvent
object describing the error which occurred.onmessage
RTCDataChannel.ommessage
property stores an EventHandler
which specifies a function to be called when the message
event is fired on the channel. This event is represented by the MessageEvent
interface. This event is sent to the channel when a message is received from the other peer.onopen
RTCDataChannel.onopen
property is an EventHandler
which specifies a function to be called when the open
event is fired; this is a simple Event
which is sent when the data channel's underlying data transport—the link over which the RTCDataChannel
's messages flow—is established or re-established.Also inherits methods from: EventTarget
close()
RTCDataChannel.close()
method closes the RTCDataChannel
. Either peer is permitted to call this method to initiate closure of the channel.send()
send()
method of the RTCDataChannel
interface sends data across the data channel to the remote peer.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 |
---|---|---|
WebRTC 1.0: Real-time Communication Between Browsers The definition of 'RTCDataChannel' in that specification. | Working Draft | Initial specification. |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | 22 (22) [1] | No support | (Yes) | ? |
onbufferedamountlow | 56 | No support | No support | 43 | No support |
Feature | Android Webview | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | 29 | 29 | 22.0 (22) [1] | No support | (Yes) | No support |
onbufferedamountlow | 56 | 56 | No support | ? | 43 | ? |
[1] The interface is called DataChannel
and not RTCDataChannel
in Firefox. However, a binding has been in place since Firefox 24 so that either name will work.
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel