



Finding the IP is not a problem for computers that are connected directly to the internet since it (the OS) knows it’s own public IP and can be easily queried by the browser (or other WebRTC clients), but it can be an issue for computers & devices that are part of a local network (behind a router) including mobile devices connected through 3G/4G where their IP is the local network assigned IP. Once a signaling connection is established between the (2) WebRTC endpoints and the signaling server, information can be exchanged.Ī very important piece of information is the public IP and port at which each endpoint can be reached.

Running your signaling over port 80 or 443 is one of the 1st things you can do to ensure high connection rates for WebRTC. This default config allows Kurento to run in parallel with your (Apache, nginx) web server but because they’re not commonly used ports like 80 or 443 there’s a high chance that computers & devices that’re part of more restrictive networks will not be able to communicate with these ports on your signaling server. Kurento for example listens on port 8888 for websocket and on 8443 for secure websocket connections. Signaling is also one of the first points where the WebRTC connection process can fail. Secure websockets (wss://) can be also used and are recommended if you wish to have secure data transport for signaling. Popular WebRTC media servers like Kurento use them. Websockets are widely used for signaling. Each party’s IP and port where they can be reached (ICE candidates).Signaling is the backchannel used to exchange initial information by the (2) parties wanting to establish a peer 2 peer WebRTC connection. Signaling is the first step in establishing a peer to peer WebRTC connection. Problems can appear at any part of the process. We will delve in the intricate process of establishing a peer 2 peer WebRTC connection and lay out the mechanisms that can lead to failed connections.Įstablishing a peer 2 peer WebRTC connection has 3 steps: Failed WebRTC connections can be caused by restrictive networks behind symmetric NATs, port blocks and even protocol blocks at the application & transport layers.
