RTCIceCandidate.protocol

The RTCIceCandidate interface's read-only protocol property is a string which indicates whether the candidate uses UDP or TCP as its transport protocol. protocol is null by default if not specified properly in the SDP, but this is an error condition and will result in a thrown exception when you call RTCPeerConnection.addIceCandidate().

The protocol property's value is set when the RTCIceCandidate() constructor is used. The value is automatically extracted from the candidate a-line, if it's formatted properly.

Syntax

var protocol = RTCIceCandidate.protocol;

Value

A DOMString which indicates what network protocol the candidate uses, UDP or TCP. These values are defined by the enumerated type RTCIceProtocol:

tcp
The candidate, if selected, would use TCP as the transport protocol for its data. The tcpType property provides additional information about the kind of TCP candidate represented by the object.
udp
The candidate will use the UDP transport protocol for its data. This is the preferred protocol for media interactions because of its better performance profile.

Note: If protocol is null — and protocol is supported by the user agent — passing the candidate to addIceCandidate() will fail, throwing an OperationError exception.

Usage notes

Here's an example candidate a-line from an ICE transaction:

a=candidate:4234997325 1 udp 2043278322 192.168.0.56 44323 typ host

The third field, "udp", is the protocol type, indicating that the candidate would use the UDP transport protocol.

Example

This code snippet examines the value of protocol to decide if it should look at the value of tcpType to see if it's a simultaneous-open (S-O) candidate.

if (candidate.protocol == "tcp") {
  if (candidate.tcpType == "so") {
    adjustForSimultaneousOpen(candidate);
}

Specifications

Specification Status Comment
WebRTC 1.0: Real-time Communication Between Browsers
The definition of 'RTCIceCandidate.protocol' in that specification.
Candidate Recommendation Initial definition.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
protocolChrome Full support 74Edge Full support YesFirefox No support NoIE No support NoOpera No support NoSafari ? WebView Android Full support 74Chrome Android Full support 74Firefox Android No support NoOpera Android No support NoSafari iOS ? Samsung Internet Android Full support Yes

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown