diff --git a/src/main/java/im/rosetta/service/services/ForwardUnitService.java b/src/main/java/im/rosetta/service/services/ForwardUnitService.java index 5d276a1..02069d4 100644 --- a/src/main/java/im/rosetta/service/services/ForwardUnitService.java +++ b/src/main/java/im/rosetta/service/services/ForwardUnitService.java @@ -206,14 +206,12 @@ public class ForwardUnitService { * @return список серверов для RTC */ public Set getTurnServers() { - Set turnServers = new HashSet<>(); + Set iceServers = new HashSet<>(); for(SFU sfu : this.sfuConnections) { - RTCIceServer turnServer = sfu.getTurnServer(); - if(turnServer != null) { - turnServers.add(turnServer); - } + Set iceServersSupporetd = sfu.getIceServers(); + iceServers.addAll(iceServersSupporetd); } - return turnServers; + return iceServers; } diff --git a/src/main/java/io/g365sfu/SFU.java b/src/main/java/io/g365sfu/SFU.java index 5abc6eb..a2aa358 100644 --- a/src/main/java/io/g365sfu/SFU.java +++ b/src/main/java/io/g365sfu/SFU.java @@ -4,6 +4,7 @@ import java.net.URISyntaxException; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.HashSet; +import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -64,11 +65,9 @@ public class SFU { private Consumer onPeerDisconnected; /** - * TURN сервер предоставляемый SFU (если включен), который может быть использован - * для обмена кандидатами между участниками звонка через NAT и брандмауэры. - * Если SFU сервер не предоставляет TURN сервер, то это поле будет равно null. + * TURN сервер предоставляемый SFU (если включен), может поддерживать udp,tcp протоколы (несколько ice) */ - private RTCIceServer turnServer; + private Set iceServers = new HashSet<>(); /** * Конструктор для создания объекта SFU, который будет использоваться для установления соединения с SFU сервером. @@ -244,7 +243,7 @@ public class SFU { byte[] transportBytes = new byte[transportLength]; message.get(transportBytes); String transport = new String(transportBytes).trim(); - this.turnServer = new RTCIceServer(url, username, credential, transport); + this.iceServers.add(new RTCIceServer(url, username, credential, transport)); } } @@ -400,7 +399,7 @@ public class SFU { /** * Возвращает TURN сервер на этом SFU */ - public RTCIceServer getTurnServer() { - return turnServer; + public Set getIceServers() { + return this.iceServers; } }