mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-12 09:13:23 +00:00
feat: add default TURN servers for same-network call connectivity
Add OpenRelay (metered.ca) free TURN servers to IceServerConfig as defaults alongside STUN. This fixes calls between devices on the same WiFi network where hairpin NAT isn't supported — the ~20% case where STUN-only fails. TURN servers on ports 80, 443, and 443/TCP to bypass corporate firewalls. Uses openrelayproject public credentials (20GB/month free tier). https://claude.ai/code/session_017hZm7yu7CzmcQgZGSaqSXS
This commit is contained in:
@@ -30,8 +30,27 @@ object IceServerConfig {
|
||||
PeerConnection.IceServer.builder("stun:stun.cloudflare.com:3478").createIceServer(),
|
||||
)
|
||||
|
||||
val defaultTurnServers =
|
||||
listOf(
|
||||
PeerConnection.IceServer
|
||||
.builder("turn:openrelay.metered.ca:80")
|
||||
.setUsername("openrelayproject")
|
||||
.setPassword("openrelayproject")
|
||||
.createIceServer(),
|
||||
PeerConnection.IceServer
|
||||
.builder("turn:openrelay.metered.ca:443")
|
||||
.setUsername("openrelayproject")
|
||||
.setPassword("openrelayproject")
|
||||
.createIceServer(),
|
||||
PeerConnection.IceServer
|
||||
.builder("turn:openrelay.metered.ca:443?transport=tcp")
|
||||
.setUsername("openrelayproject")
|
||||
.setPassword("openrelayproject")
|
||||
.createIceServer(),
|
||||
)
|
||||
|
||||
fun buildIceServers(userTurnServers: List<TurnServerConfig> = emptyList()): List<PeerConnection.IceServer> {
|
||||
val servers = defaultStunServers.toMutableList()
|
||||
val servers = (defaultStunServers + defaultTurnServers).toMutableList()
|
||||
userTurnServers.forEach { turn ->
|
||||
servers.add(
|
||||
PeerConnection.IceServer
|
||||
|
||||
Reference in New Issue
Block a user