I have read several other posts on TURN servers but it still seems unclear to me.
People seem to say that if the signaling server runs on a public IP on a standard port (80/443), TURN servers are not necessary. But I have seen some posts where people are still using TURN servers to solve networking issues.
So I am wondering, in my case, where:
The SERVER is behind a public IP address, https (443) and with all required ports open.
The CLIENT(S) may be behind any kind of NAT configuration (like asymmetric) or firewalls.
- Are TURN servers necessary?
- If the mediasoup transports are provided with TURN servers, will they always use them, or only use them if necessary?
Are TURN servers necessary?
I can think of many scenarios where even with your media servers being on a public IP a client might fail to connect without a TURN server, one of those scenarios is if the client that is behind a firewall that blocks most ports except the ones necessary for web browsing. While your signaling server might be accessible via the port 443, your media servers will connect to each client on a specific port in a port range you specify, with a TURN you can have the media streams relayed through the port 443.
It is up to you to decide if that is necessary or not.
If the mediasoup transports are provided with TURN servers, will they always use them, or only use them if necessary?
Only when necessary unless you specify otherwise.
I see, thanks, and is there any way to force the webRTC workers to all work on port 443? Configuring mediasoup in a way that it behaves like a turn from the outside?
The closest thing to that idea that you can do is having the TURN server on the same machine that has the media server.
Although if in your setup the signaling server is using the port 443 already you are going to have to jump through some hoops.
You will need turn for certain networks. Theres a couple isp’s in UK and Australia that are very restrictive for connectivity. Only way to get them connected with with turn because of firewall rules.