Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

Version 1 Next »

When troubleshooting WebRTC connectivity issues, it is helpful to confirm whether or not the client can successfully reach the necessary STUN server. This guide provides a quick set of instructions to validate reachability

  1. Open a chrome web browser

  2. Open the inspector (right-click>inspect)

  3. Choose the ‘Console’ tab

  4. paste in this block of code

    const iceServers = [
        {
            urls: 'stun:stun.l.google.com:19302?transport=udp'
        },
    ];
    
    const pc = new RTCPeerConnection({
    	iceServers
    });
    
    pc.onicecandidate = (e) => {
        if (!e.candidate) return;
    
        // Display candidate string e.g
        // candidate:842163049 1 udp 1677729535 XXX.XXX.XX.XXXX 58481 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag sXP5 network-cost 999
        console.log(e.candidate.candidate);
    
        if(e.candidate.type == "srflx"){
            console.log("The STUN server is reachable!");
            console.log(`   Your Public IP Address is: ${e.candidate.address}`);
        }
    };
    
    // Log errors:
    // Remember that in most of the cases, even if its working, you will find a STUN host lookup received error
    // Chrome tried to look up the IPv6 DNS record for server and got an error in that process. However, it may still be accessible through the IPv4 address
    pc.onicecandidateerror = (e) => {
        console.error(e);
    };
    
    pc.createDataChannel('stun-test');
    pc.createOffer().then(offer => pc.setLocalDescription(offer));
    
  5. Press enter

  6. Observe the response

Log errors:
In most of the cases, even if the required path is open, you will find a STUN host lookup received an error. Chrome tried to look up the IPv6 DNS record for server and got an error in that process. This is expected. However, it may still be accessible through the IPv4 address.

A response should look something like this if it worked

  • No labels