The RTCIceServer
dictionary's urls
property specifies the URL or URLs of the servers to be used for ICE negotiations. These are typically STUN and/or TURN servers.
var iceServer = {
urls = iceServerUrl | [ url1, ..., urlN ],
username: "webrtc",
credential: "turnpassword"
};
iceServers.push(iceServer);
The value of this property may be specified as a single URL or as an array of multiple URLs.
Let's look a few examples of varying complexity.
This example creates a new RTCPeerConnection
which will use a STUN server at stunserver.example.org
to negotiate connections.
myPeerConnection = new RTCPeerConnection({
iceServers: [
{
urls: "stun:stunserver.example.org"
}
]
});
Notice that only the urls
property is provided; the STUN server doesn't require authentication, so this is all that's needed.
The second example creates a new RTCPeerConnection
which will use a TURN server at turnserver.example.org
to negotiate connections. Logging into the TURN server will use the username "webrtc" and the creative password "turnpassword".
myPeerConnection = new RTCPeerConnection({
iceServers: [
{
urls: "turn:turnserver.example.org",
username: "webrtc",
credential: "turnpassword"
}
]
});
The next example creates a new RTCPeerConnection
which will use a single TURN server which has multiple URLs. This is useful if the server is, for example, available both on "turn" and "turns" schemes, or if there's a fallback address available for the server.
Note: Keep in mind that ICE will try all the URLs you list here, so the more you include, the longer connections will take to establish.
myPeerConnection = new RTCPeerConnection({
iceServers: [
{
urls: ["turns:turnserver.example.org", "turn:turnserver.example.org"],
username: "webrtc",
credential: "turnpassword"
}
]
});
Finally, this example creates a new RTCPeerConnection
which will use one of two servers for ICE negotiation. Each server can have one or more URLs, as demonstrated above.
myPeerConnection = new RTCPeerConnection({
iceServers: [
{
urls: ["turns:turnserver.example.org", "turn:turnserver.example.org"],
username: "webrtc",
credential: "turnpassword"
},
{
urls: "stun: stunserver.example.org"
}
]
});
Two ICE servers are provided. One is a TURN server which can be accessed both over TURN and TURNS. The other is a STUN server. Any number of servers could be listed of any combination of types.