Files
rosetta-wss/src/main/java/im/rosetta/service/services/ForwardUnitService.java
2026-03-10 16:06:11 +02:00

57 lines
2.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package im.rosetta.service.services;
import java.util.HashSet;
import java.util.Set;
import im.rosetta.logger.Logger;
import im.rosetta.logger.enums.Color;
import io.g365sfu.SFU;
/**
* Это сервис который взаимодействуют с SFU серверами для организации звонков между пользователями.
*/
public class ForwardUnitService {
private Logger logger;
private Set<SFU> sfuConnections = new HashSet<>();
public ForwardUnitService(Logger logger) {
this.logger = logger;
}
/**
* Инициализирует соединения к SFU серверам для звонков.
* Ожидается, что адреса SFU серверов и секретные ключи для них будут переданы через переменную окружения SFU_SERVERS в формате "address1@secretKey1,address2@secretKey2,...".
* Для каждого сервера будет предпринята попытка установить соединение и выполнить рукопожатие.
* Если соединение не может быть установлено или рукопожатие не удается,
* будет выведено сообщение об ошибке в лог, но процесс продолжится для остальных серверов.
* Успешные подключения будут сохранены в наборе sfuConnections для дальнейшего использования
*/
public void connectToAllSFUServers() {
String sfuServersEnv = System.getenv("SFU_SERVERS");
if(sfuServersEnv == null || sfuServersEnv.isEmpty()) {
this.logger.info(Color.YELLOW + "No SFU servers configured, skipping SFU connections boot");
return;
}
String[] sfuServers = sfuServersEnv.split(",");
for(String sfuServer : sfuServers) {
String[] parts = sfuServer.split("@");
if(parts.length != 2) {
this.logger.error(Color.RED + "Invalid SFU server configuration: " + sfuServer);
continue;
}
String address = parts[0];
String secretKey = parts[1];
try {
SFU connection = new SFU(address, secretKey);
connection.connect();
this.sfuConnections.add(connection);
this.logger.info(Color.GREEN + "Successfully connected to SFU server: " + address);
} catch (Exception e) {
this.logger.error(Color.RED + "Failed to connect to SFU server: " + address + ", error: " + e.getMessage());
}
}
}
}