Description
While looking at the new webrtc api, I noticed that the Ring web app seems to be fetching a set of ice servers when you first load the page. These values are then stored in localStorage under wrtc-isc (base64 encoded) and not fetched again.
The request is something like this:
GET https://account.ring.com/api/cmds/iceConfig
With a response like this: (note i've redacted the creds in case they are personal)
[
{
"IceConfiguration": [
{
"credential": "GTehw7**",
"url": "turn:mrs-f63a5c68-1.p.us-west-2.cmds-tachyon.com:4172?transport=udp",
"username": "16912**"
},
{
"credential": "GTehw**",
"url": "turns:mrs-f63a5c68-1.p.us-west-2.cmds-tachyon.com:443?transport=tcp",
"username": "16912**"
},
{
"url": "stun:mrs-f63a5c68-1.p.us-west-2.cmds-tachyon.com:4172"
}
]
}
]
We currently use a set of hard-coded STUN servers to gather ice candidates, but it would be much preferred to use these servers provided by Ring. The fact that there are turn servers in here means we may get some much better connection options for complex network scenarios (eg users on VPNs).
The biggest challenge is that the url from the web app (https://account.ring.com/api/cmds/iceConfig) does not directly translate to the url we need to use from Node.js. We need to figure out the right URL, and then it should be easy to start using the provided servers.
@tsightler maybe you have some insight here? Are the android/ios apps making similar calls to a different endpoint by chance?
Description
While looking at the new webrtc api, I noticed that the Ring web app seems to be fetching a set of ice servers when you first load the page. These values are then stored in
localStorageunderwrtc-isc(base64 encoded) and not fetched again.The request is something like this:
GET https://account.ring.com/api/cmds/iceConfigWith a response like this: (note i've redacted the creds in case they are personal)
We currently use a set of hard-coded STUN servers to gather ice candidates, but it would be much preferred to use these servers provided by Ring. The fact that there are turn servers in here means we may get some much better connection options for complex network scenarios (eg users on VPNs).
The biggest challenge is that the url from the web app (
https://account.ring.com/api/cmds/iceConfig) does not directly translate to the url we need to use from Node.js. We need to figure out the right URL, and then it should be easy to start using the provided servers.@tsightler maybe you have some insight here? Are the android/ios apps making similar calls to a different endpoint by chance?