В настоящее время я пытаюсь настроить сервер TURN, используя Coturn на CentOS 7 для приложения WebRTC. Я бы хотел, чтобы приложение передавало данные по TCP из-за строгих настроек брандмауэра, которые использует моя организация. Я тестирую сбор кандидатов ICE с помощью инструмента WebRTC Trickle ICE (https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/),, но единственным кандидатом-ретранслятором, которого я получаю, является кандидат-ретранслятор UDP.
Это имеет место, даже если яукажите «? transport = tcp» в URL-адресе сервера TURN (например, turn: server-ip-address : 3478? transport = tcp). После просмотра захвата Wireshark я заметил, что, хотя мой WebRTCклиент подключается к серверу TURN через TCP, атрибут REQUESTED-TRANSPORT в запросе на выделение ресурсов по-прежнему является UDP. Кто-нибудь знает, почему это так? Как я могу настроить свой сервер Coturn для возврата кандидатов на ретранслятор TCP?
В настоящее время я использую следующие конфигурации в моем файле turnserver.conf ...
listening-port=3478
alt-listening-port=3479
lt-cred-mech
user=test:test
realm=test-realm
fingerprint
verbose
no-tls
no-dtls
log-file=/var/log/turn/turn.log
... и следующую конфигурацию однорангового соединения в моем клиенте WebRTC.
peerConn = new RTCPeerConnection({
constraints: {
audio: true,
video: false
},
// Testing ICE candidate for coturn
iceServers: [{
urls: "turn:10.5.58.239:3478?transport=tcp",
username: "test",
credential: "test"
}],
iceTransportPolicy: "any"
});
И это ответ, который я получаю, используя инструмент Trickle ICE.
Time Component Type Foundation Protocol Address Port Priority
0.003 rtp host 547260449 udp 10.0.2.15 49165 126 | 30 | 255
0.349 rtp relay 3606296988 udp 10.5.58.239 56410 1 | 30 | 255
0.349 Done
0.355