← Cloudflare Realtime / realtime / turn
Создание учётных данных
Cloudflare выдает ключи TURN, но эти ключи нельзя использовать в качестве учетных данных с turn.cloudflare.com. Чтобы использовать TURN, необходимо создать учетные данные со значением TTL, ограничивающим срок их действия.
Создание ключа TURN
Чтобы создать учётные данные TURN, сначала необходимо создать ключ TURN с помощью Dashboard ↗, или API.
Храните свой TURN-ключ на стороне сервера (не передавайте его в браузер или приложение). TURN-ключ представляет собой долгосрочный секрет, который позволяет генерировать неограниченное количество TURN-учётных данных с более коротким сроком действия для TURN-клиентов.
С ключом TURN вы можете:
- Создание TURN-учётных данных с истекающим сроком действия
- Отзыв ранее выданных учётных данных TURN
Создание учётных данных
Для каждого TURN-пользователя следует генерировать краткосрочные учётные данные. Чтобы создавать учётные данные, у вас должен быть бэкенд-сервис, который использует ваш TURN Token ID и API-токен для их генерации. Он будет выполнять примерно такой запрос API:
curl https://rtc.live.cloudflare.com/v1/turn/keys/$TURN_KEY_ID/credentials/generate-ice-servers \
--header "Authorization: Bearer $TURN_KEY_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{"ttl": 86400}'201 (Created) ответ ниже можно затем передать в ваше фронтенд-приложение:
{
"iceServers": [
{
"urls": [
"stun:stun.cloudflare.com:3478",
"stun:stun.cloudflare.com:53"
]
},
{
"urls": [
"turn:turn.cloudflare.com:3478?transport=udp",
"turn:turn.cloudflare.com:53?transport=udp",
"turn:turn.cloudflare.com:3478?transport=tcp",
"turn:turn.cloudflare.com:80?transport=tcp",
"turns:turn.cloudflare.com:5349?transport=tcp",
"turns:turn.cloudflare.com:443?transport=tcp"
],
"username": "bc91b63e2b5d759f8eb9f3b58062439e0a0e15893d76317d833265ad08d6631099ce7c7087caabb31ad3e1c386424e3e",
"credential": "ebd71f1d3edbc2b0edae3cd5a6d82284aeb5c3b8fdaa9b8e3bf9cec683e0d45fe9f5b44e5145db3300f06c250a15b4a0"
}
]
}Используйте iceServers следующим образом при создании экземпляра RTCPeerConnection:
const myPeerConnection = new RTCPeerConnection({
iceServers: [
{
urls: [
"stun:stun.cloudflare.com:3478",
"stun:stun.cloudflare.com:53"
]
},
{
urls: [
"turn:turn.cloudflare.com:3478?transport=udp",
"turn:turn.cloudflare.com:53?transport=udp",
"turn:turn.cloudflare.com:3478?transport=tcp",
"turn:turn.cloudflare.com:80?transport=tcp",
"turns:turn.cloudflare.com:5349?transport=tcp",
"turns:turn.cloudflare.com:443?transport=tcp"
],
"username": "bc91b63e2b5d759f8eb9f3b58062439e0a0e15893d76317d833265ad08d6631099ce7c7087caabb31ad3e1c386424e3e",
"credential": "ebd71f1d3edbc2b0edae3cd5a6d82284aeb5c3b8fdaa9b8e3bf9cec683e0d45fe9f5b44e5145db3300f06c250a15b4a0"
},
],
}); ttl значение можно настроить так, чтобы срок действия краткосрочного ключа истекал через определённое время. Это значение должно превышать время, в течение которого пользователи, по вашим ожиданиям, будут использовать TURN-сервис. Например, если вы используете TURN для приложения видеоконференций, установите значение равным самой длинной ожидаемой продолжительности видеозвонка в приложении.
При использовании краткосрочных учётных данных TURN с WebRTC их можно обновлять во время сессии WebRTC с помощью RTCPeerConnection setConfiguration() ↗ API.
Отзыв учётных данных
Краткосрочные учётные данные также можно отозвать до истечения TTL с помощью вызова API, как показано ниже:
curl --request POST \
https://rtc.live.cloudflare.com/v1/turn/keys/$TURN_KEY_ID/credentials/$USERNAME/revoke \
--header "Authorization: Bearer $TURN_KEY_API_TOKEN"A 204 (No Content) ответ возвращается, если учетные данные успешно отозваны.