Web/API/RTCDataChannel/readyState

From Get docs

This is an experimental technologyCheck the Browser compatibility table carefully before using this in production.


The read-only RTCDataChannel property readyState returns an enum of type RTCDataChannelState which indicates the state of the data channel's underlying data connection.

Syntax

var state = aDataChannel.readyState;

Values

A string which is one of the values in the RTCDataChannelState enum, indicating the current state of the underlying data transport.

RTCDataChannelState enum

The RTCDataChannelState enum defines string constants which reflect the current status of the RTCDataChannel's underlying data connection.

Constant Description
"connecting" The user agent (browser) is in the process of creating the underlying data transport; that is, whatever network level connection is used to link the two peers together is in the process of being set up. This is the state of a new RTCDataChannel after being created by RTCPeerConnection.createDataChannel() (on the peer which started the connection process).
"open" The underlying data transport has been established and data can be transferred bidirectionally across it. This is the default state of a new RTCDataChannel created by the WebRTC layer when the remote peer created the channel and delivered to the site or app in a datachannel event of type RTCDataChannelEvent.
"closing" The process of closing the underlying data transport has begun. It is no longer possible to queue new messages to be sent, but previously queued messages may still be send or received before entering the "closed" state.
"closed" The underlying data transport has closed, or the attempt to make the connection failed.

Example

var dataChannel = peerConnection.createDataChannel("File Transfer");
var sendQueue = [];

function sendMessage(msg) {
  switch(dataChannel.readyState) {
    case "connecting":
      console.log("Connection not open; queueing: " + msg);
      sendQueue.push(msg);
      break;
    case "open":
      sendQueue.forEach((msg) => dataChannel.send(msg));
      break;
    case "closing":
      console.log("Attempted to send message while closing: " + msg);
      break;
    case "closed":
      console.log("Error! Attempt to send while connection closed.");
      break;
  }
}

Specifications

Specification Status Comment
WebRTC 1.0: Real-time Communication Between BrowsersThe definition of 'RTCDataChannel.readyState' in that specification. Candidate Recommendation Initial specification.

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet

readyState

Experimental'

Chrome

Full support 56

Edge

Full support ≤79

Firefox

Full support Yes

IE

No support No

Opera

Full support 43

Safari

No support No

WebView Android

Full support 56

Chrome Android

Full support 56

Firefox Android

Full support Yes

Opera Android

Full support 43

Safari iOS

No support No

Samsung Internet Android

Full support 6.0

Legend

Full support  
Full support
No support  
No support
Experimental. Expect behavior to change in the future.'
Experimental. Expect behavior to change in the future.


See also