Поддержка нескольких протоколов у ICE серверов

This commit is contained in:
RoyceDa
2026-03-17 15:26:20 +02:00
parent 12a3e6266b
commit 6166211c60
2 changed files with 10 additions and 13 deletions

View File

@@ -206,14 +206,12 @@ public class ForwardUnitService {
* @return список серверов для RTC
*/
public Set<RTCIceServer> getTurnServers() {
Set<RTCIceServer> turnServers = new HashSet<>();
Set<RTCIceServer> iceServers = new HashSet<>();
for(SFU sfu : this.sfuConnections) {
RTCIceServer turnServer = sfu.getTurnServer();
if(turnServer != null) {
turnServers.add(turnServer);
Set<RTCIceServer> iceServersSupporetd = sfu.getIceServers();
iceServers.addAll(iceServersSupporetd);
}
}
return turnServers;
return iceServers;
}

View File

@@ -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<DisconnectedPeer> onPeerDisconnected;
/**
* TURN сервер предоставляемый SFU (если включен), который может быть использован
* для обмена кандидатами между участниками звонка через NAT и брандмауэры.
* Если SFU сервер не предоставляет TURN сервер, то это поле будет равно null.
* TURN сервер предоставляемый SFU (если включен), может поддерживать udp,tcp протоколы (несколько ice)
*/
private RTCIceServer turnServer;
private Set<RTCIceServer> 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<RTCIceServer> getIceServers() {
return this.iceServers;
}
}