У меня есть приложение webrtc, оно отлично работает, но для тестирования мне нужно проверить, работает ли мой сервер TURN, но поскольку оба тестовых устройства находятся в одной сети, я не в состоянии проверить, мысли ниже коды будет ограничивать кандидат только те, используя сервер TURN,WebRTC: заставить одноранговых узлов использовать сервер TURN
function onIceCandidate(event, targetSessionID, targetUserName) {
if (event.candidate) {
var candidate = event.candidate.candidate;
if(candidate.indexOf("relay")<0){ // if no relay address is found, assuming it means no TURN server
return;
}
sendMessage(candidate); // using socket.io to send to the otherside
...
, но я заметил, что (с большим разочарованием), это не работает, потому что когда сверстники создают описание ответа,
....
a=candidate:0 1 UDP 2128609535 13.198.98.221 58779 typ host
a=candidate:0 2 UDP 2128609534 13.198.98.221 58780 typ host
....
это означает, что передача является прямой, а не через ТУР N server, правильно ли я предполагаю это? Теперь, как заставить webrtc использовать сервер TURN?
Да, кандидаты отображаются в этом обратном вызове, но впоследствии они добавляются в любой SDP, созданный после. Вам также придется удалить нежелательных кандидатов из SDP. –
@BenjaminTrent Я просмотрел SDP во время предложения и ответа, поэтому единственный способ предотвратить прямое соединение p2p - это вручную манипулировать предложением и строкой ответа (получать из '' 'createOffer''' и' '' createAnswer'' ')? – mido
Я так считаю, что если вы удалите нежелательных кандидатов на лёд, прежде чем устанавливать их локально и отправляете их сверстникам, которые ДОЛЖНЫ работать. –