RTCDataChannel
BaselineWidely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
* Some parts of this feature may have varying levels of support.
TheRTCDataChannel
interface represents a network channel which can be used for bidirectional peer-to-peer transfers of arbitrary data. Every data channel is associated with anRTCPeerConnection
, 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 theRTCPeerConnection
'screateDataChannel()
method. The peer being invited to exchange data receives adatachannel
event (which has typeRTCDataChannelEvent
) to let it know the data channel has been added to the connection.
RTCDataChannel
is atransferable object.
Instance properties
Also inherits properties fromEventTarget
.
binaryType
A string specifying the type of objectthat should be used to represent binary data received on the
RTCDataChannel
.Values are the same as allowed on theWebSocket.binaryType
property:blob
ifBlob
objects are being used,orarraybuffer
ifArrayBuffer
objects are being used.The default isarraybuffer
.bufferedAmount
Read onlyReturns the number of bytes of datacurrently queued to be sent over the data channel.
bufferedAmountLowThreshold
Specifies the number of bytes of buffered outgoing data that is considered "low".The default value is 0.
id
Read onlyReturns an ID number (between 0 and 65,534)which uniquely identifies the
RTCDataChannel
.label
Read onlyReturns a string that contains a name describing the data channel.These labels are not required to be unique.
maxPacketLifeTime
Read onlyReturns 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 onlyReturns the maximum number of timesthe browser should try to retransmit a message before giving up,as set when the data channel was created,or
null
, which indicates that there is no maximum.negotiated
Read onlyIndicateswhether the
RTCDataChannel
's connection was negotiated by the Web app(true
)or by the WebRTC layer (false
).The default isfalse
.ordered
Read onlyIndicates 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 onlyReturns a string containing the name of the subprotocol in use.If no protocol was specifiedwhen the data channel was created,then this property's value is the empty string (
""
).readyState
Read onlyReturns a stringwhich indicates the state of the data channel's underlying data connection.It can have one of the following values:
connecting
,open
,closing
, orclosed
.
Obsolete properties
reliable
Read onlyDeprecatedNon-standardIndicates whether or not the data channel isreliable.
Instance methods
Also inherits methods fromEventTarget
.
Events
bufferedamountlow
Sentwhen the number of bytes of data in the outgoing data bufferfalls below the value specified by
bufferedAmountLowThreshold
.close
Sent when the underlying data transport closes.
closing
Sent when the underlying data transport is about to start closing.
error
Sent when an error occurs on the data channel.
message
Sent when a message has been received from the remote peer.The message contents can be foundin the event's
data
property.open
Sent when the data channel is first opened,or when an existing data channel's underlying connection re-opens.
Data format
The underlying data format is defined by the IEEE specificationSDP Offer/Answer Procedures for SCTP over DTLS Transport(RFC 8841). The current format specifies its protocol as either"UDP/DTLS/SCTP"
(UDP carrying DTLS carrying SCTP) or"TCP/DTLS/SCTP"
(TCP carrying DTLS carrying SCTP). Older browsers may only specify"DTLS/SCTP"
.
Example
const pc = new RTCPeerConnection();const dc = pc.createDataChannel("my channel");dc.onmessage = (event) => { console.log(`received: ${event.data}`);};dc.onopen = () => { console.log("datachannel open");};dc.onclose = () => { console.log("datachannel close");};
Specifications
Specification |
---|
WebRTC: Real-Time Communication in Browsers # rtcdatachannel |