Hi all! I've tried absolutely everything I can think of but am unable to get Janus to work when the client is on cellular data.
Our config
We're trying to get a mobile app using react-native-webrtc to connect to Janus. Our use case for Janus is that we're using the videoroom plugin to have a broadcaster stream their mobile camera feed to Janus. We use
https://github.com/atyenoria/janus-webrtc-gateway-docker for our base Janus configuration (with latest Janus and libnice), only modifying janus.jcfg to support IPv6, nat 1-1 mapping, tcp support and the HTTP cfg to add the admin API so I can give you the log I did below.
Problem
It works perfectly fine while on WiFi, but Janus is unable to connect with the publisher or any viewers as soon as they are on cellular data. We're located in the USA, and it happens on different cellular service providers, not just one.
Things we've tried
We've tried running our own stun/turn server as well as using third-party ones and it works fine on WiFi with any Janus configuration we use or change. However, none of those configurations work with cellular data. On WiFi, since I am behind a router, the client does generate ice candidates of the "srflx" type. On cellular, the client only generates ice candidates with the "host" type and does not communicate with the stun/turn servers.
I've looked across other issues in this group that have suggested the same problem, and thought it might be a TURN server issue. After setting one up, it didn't address the issue, however our TURN server is definitely working correctly because it works on WiFi and we can see it retrieving the proper info/streaming as usual.
We wanted to make sure it wasn't a client problem, so we also did a "peer-to-peer" video chat between two phones purely with the client webrtc peerconnection and not Janus, which works fine on cellular data. It's specifically Janus that appears to be failing to connect, and we're not sure why. We would really appreciate any help or thoughts on this! Thank you so much. Janus is a super cool project and this is the final piece we need working. What you guys are doing is really cool.
Logs
The following are logs (please note my public IP has been scrubbed and replaced with "PUBLIC_IP"):
-
https://pastebin.com/BADa6pR1 (successful connection on wifi)
-
https://pastebin.com/gTgZi1q5 (failed connection on cellular, sometimes continues to gather or state is "failed" with basically the same information)