Hi all,
I'm building a system that relies on WebRTC DataChannels and I'm having troubles trying to make it work in a distributed scenario, where different peers are behind different NATs.
For the purpose of this question, the app can be thought as a system that sends/receives information over a data channel.
My current implementation works just fine when peers are within the same local network, but it fails to create the data channel if the peers are distributed over different NATs. Given the fact that the remoteDescription and localDescription objects have correctly set up the ICE candidates information (both private and public IPs of both local and remote peers), how is possible that the DataChannel is correctly created when peers are within the same NAT, but never opens when they aren't?
The "readyState" of the local DataChannel stays in "connecting", so the "ondatachannel" callback never gets triggered on the remote peer. Could this behavior has something to do with the fact that the iceConnectionState gets stuck at "checking" and never goes to "completed"?
I can show some code if that helps understanding the problem. I've been making the tests with Google Chrome Version 33.0.1750.117 and also tried changing the transport protocol from TCP to UDP without any luck.
I'll appreciate any help you can give me. Thanks!