Java-скрипт RTCPeerConnection без оглушения сервер постоянно проверяет состояние соединения (ICE)

#javascript #webrtc

#язык JavaScript #webrtc

Вопрос:

Привет, я попытался использовать следующий код, чтобы включить подключение к WebRTC, когда я нажимаю кнопку «пуск» на веб-сайте. Когда я использую ошеломляющий сервер, он работает безупречно. Я получаю следующие сообщения с сервера:

  1. Проверяется состояние подключения ICE
  2. Состояние подключения ICE завершено

Но если я не использую сервер ОГЛУШЕНИЯ (оба одноранговых узла находятся в одной локальной сети), согласно другим сообщениям stackoverflow, я просто не должен передавать адрес сервера ОГЛУШЕНИЯ в конфигурацию. Однако, если я нажму кнопку «Пуск», будет вызвана функция «Пуск», но единственное сообщение, которое я получу, будет:

  1. Проверяется состояние подключения ICE

и ничего больше. Вот код, который я использую:

 var pc = null;  function negotiate() {  pc.addTransceiver('video', {direction: 'recvonly'});  pc.addTransceiver('audio', {direction: 'recvonly'});  return pc.createOffer().then(function(offer) {  return pc.setLocalDescription(offer);  }).then(function() {  // wait for ICE gathering to complete  return new Promise(function(resolve) {  if (pc.iceGatheringState === 'complete') {  resolve();  } else {  function checkState() {  if (pc.iceGatheringState === 'complete') {  pc.removeEventListener('icegatheringstatechange', checkState);  resolve();  }  }  pc.addEventListener('icegatheringstatechange', checkState);  }  });  }).then(function() {  var offer = pc.localDescription;  return fetch('/offer', {  body: JSON.stringify({  sdp: offer.sdp,  type: offer.type,  }),  headers: {  'Content-Type': 'application/json'  },  method: 'POST'  });  }).then(function(response) {  return response.json();  }).then(function(answer) {  return pc.setRemoteDescription(answer);  }).catch(function(e) {  alert(e);  }); }  function start() {  var config = {  sdpSemantics: 'unified-plan'  };   if (document.getElementById('use-stun').checked) {  config.iceServers = [{urls: ['stun:stun.l.google.com:19302']}];  }   pc = new RTCPeerConnection(config);   // connect audio / video  pc.addEventListener('track', function(evt) {  if (evt.track.kind == 'video') {  document.getElementById('video').srcObject = evt.streams[0];  } else {  document.getElementById('audio').srcObject = evt.streams[0];  }  });   document.getElementById('start').style.display = 'none';  negotiate();  document.getElementById('stop').style.display = 'inline-block'; } 

Код, если из следующего репозитория: исходный файл