I'm trying to make a peer to peer Javascript game that can be played on mobile browsers.

I have been able to successfully set up a p2p connection between two phones within my local WiFi network.

I am unable to connect two phones over mobile networks or one on WiFi and one on a mobile network.

I tried turning off my Windows firewall and could not connect my PC to my phone on a mobile network.

I tried having both peers set up their own data channels and set negotiated.

I've read that 80% to 90% of devices are able to connect over WebRTC without TURN servers so I am at a complete loss of what to do next.

Desktop: Google Chrome 79.0.3945.130 (Official Build) (64-bit) (cohort: Stable)

Mobile (Pixel 3/Android 10): Google Chrome 79.0.3945.116

MOBILE NETWORK

Time Event 1/24/2020, 11:58:17 PM createLocalDataChannel label: Test, reliable: true 1/24/2020, 11:58:17 PM negotiationneeded 1/24/2020, 11:58:17 PM createOffer 1/24/2020, 11:58:17 PM createOfferOnSuccess 1/24/2020, 11:58:17 PM setLocalDescription 1/24/2020, 11:58:17 PM signalingstatechange 1/24/2020, 11:58:17 PM setLocalDescriptionOnSuccess 1/24/2020, 11:58:17 PM icegatheringstatechange 1/24/2020, 11:58:17 PM icecandidate (host) 1/24/2020, 11:58:17 PM icecandidate (srflx) 1/24/2020, 11:58:17 PM setRemoteDescription 1/24/2020, 11:58:17 PM addIceCandidate (host) 1/24/2020, 11:58:17 PM signalingstatechange 1/24/2020, 11:58:17 PM setRemoteDescriptionOnSuccess 1/24/2020, 11:58:17 PM iceconnectionstatechange 1/24/2020, 11:58:17 PM iceconnectionstatechange (legacy) 1/24/2020, 11:58:17 PM connectionstatechange 1/24/2020, 11:58:18 PM addIceCandidate (srflx) 1/24/2020, 11:58:33 PM iceconnectionstatechange disconnected 1/24/2020, 11:58:33 PM iceconnectionstatechange (legacy) failed 1/24/2020, 11:58:33 PM connectionstatechange failed

WIFI NETWORK

Time Event 1/25/2020, 12:02:45 AM createLocalDataChannel label: Test, reliable: true 1/25/2020, 12:02:45 AM negotiationneeded 1/25/2020, 12:02:45 AM createOffer 1/25/2020, 12:02:45 AM createOfferOnSuccess 1/25/2020, 12:02:45 AM setLocalDescription 1/25/2020, 12:02:45 AM signalingstatechange 1/25/2020, 12:02:45 AM setLocalDescriptionOnSuccess 1/25/2020, 12:02:45 AM icegatheringstatechange 1/25/2020, 12:02:45 AM icecandidate (host) 1/25/2020, 12:02:45 AM icecandidate (srflx) 1/25/2020, 12:02:46 AM setRemoteDescription 1/25/2020, 12:02:46 AM signalingstatechange 1/25/2020, 12:02:46 AM setRemoteDescriptionOnSuccess 1/25/2020, 12:02:46 AM icegatheringstatechange 1/25/2020, 12:02:46 AM addIceCandidate (host) 1/25/2020, 12:02:46 AM iceconnectionstatechange 1/25/2020, 12:02:46 AM iceconnectionstatechange (legacy) 1/25/2020, 12:02:46 AM connectionstatechange 1/25/2020, 12:02:46 AM addIceCandidate (srflx) 1/25/2020, 12:02:46 AM iceconnectionstatechange connected 1/25/2020, 12:02:46 AM iceconnectionstatechange (legacy) connected 1/25/2020, 12:02:46 AM connectionstatechange connected 1/25/2020, 12:02:46 AM iceconnectionstatechange (legacy) completed

Peer to peer code