melodic-arm-17634
07/22/2025, 6:13 PMtall-airline-16756
07/22/2025, 6:13 PMtall-airline-16756
07/22/2025, 6:14 PMmelodic-arm-17634
07/22/2025, 6:24 PMconnectOpts.rtcConfig = { iceTransportPolicy: 'relay' };
Even when forcing TURN, clients may still end up connecting to the TURN server embedded in the media node (which uses UDP) and may still face the same issue where UDP is blocked. Future work includes allowing clients to force TURN/TLS.
If i do this, do i need to set it in my frontend app?tall-airline-16756
07/22/2025, 6:25 PMiceTransportPolicy: 'relay' right in your frontend app's connectOpts.rtcConfig. Think of this like a personal preference for your specific application.
If you want something a bit more universal, LiveKit also offers a server-side setting called clientConfiguration.forceRelay that basically says "hey, everyone's using TURN relay, no exceptions!" This will override any client-side settings, so it's super powerful.
• Want client-specific control? Go with iceTransportPolicy: 'relay' in your frontend.
• Need to make sure ALL clients use TURN relay? The server-side forceRelay setting is your new best friend.
Most of the time, the frontend setting works like a charm. But if you really need to lock things down server-side, you've got that option too!
Sources: livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt | src/room/RTCEngine.ts | Firewall Tips | lib/src/types/other.dart | Sources/LiveKit/Core/Room+Engine.swiftmelodic-arm-17634
07/22/2025, 9:03 PMtall-airline-16756
07/22/2025, 9:05 PM