SHA256
49 lines
1.9 KiB
Markdown
49 lines
1.9 KiB
Markdown
# Подключение TURN к SHiNE-серверу
|
|
|
|
Начиная с текущей версии, клиент звонков запрашивает ICE-конфиг у backend через WS-операцию `GetCallIceConfig` и использует её для `RTCPeerConnection`.
|
|
|
|
## 1. Настройки backend
|
|
Файл: `src/main/resources/application.properties`
|
|
|
|
Ключи:
|
|
|
|
```properties
|
|
call.ice.stun.urls=stun:stun.l.google.com:19302
|
|
call.ice.turn.urls=turn:37.214.58.208:3478?transport=udp,turn:37.214.58.208:3478?transport=tcp
|
|
call.ice.turn.ttlSec=600
|
|
call.ice.turn.userPrefix=shine
|
|
call.ice.turn.sharedSecret=CHANGE_ME_LONG_RANDOM_SECRET
|
|
|
|
# fallback (если не используете shared-secret)
|
|
call.ice.turn.username=
|
|
call.ice.turn.password=
|
|
```
|
|
|
|
## 2. Рекомендуемый режим (временные credentials)
|
|
- На coturn и на SHiNE-сервере должен быть **одинаковый** secret:
|
|
- coturn: `static-auth-secret=...`
|
|
- SHiNE: `call.ice.turn.sharedSecret=...`
|
|
- Тогда SHiNE выдаёт короткоживущие `turnUsername/turnPassword` (TTL).
|
|
|
|
## 3. Fallback режим (статический логин/пароль)
|
|
Если временные credentials не используются:
|
|
|
|
```properties
|
|
call.ice.turn.sharedSecret=
|
|
call.ice.turn.username=turn_user
|
|
call.ice.turn.password=turn_password
|
|
```
|
|
|
|
## 4. Деплой после изменения
|
|
```bash
|
|
./gradlew deployServerNoCleanNoTests
|
|
./gradlew deployWEB
|
|
```
|
|
|
|
## 5. Проверка
|
|
1. Авторизоваться двумя клиентами.
|
|
2. Запустить звонок.
|
|
3. Проверить, что звонок устанавливается даже в сети, где прямой P2P затруднён.
|
|
4. Если TURN недоступен, клиент автоматически откатится к STUN-конфигу по умолчанию.
|
|
|