LocalConnection.addEventListener("track", ) не вызывается после добавления дорожек

Я новичок в webRTC и пытаюсь создать приложение для потоковой передачи видео. Сигнализация реализуется через вебсокеты.

При запуске приложения я не могу понять, почему не запускается функция lc.ontrack. Соединение между узлами установлено правильно, оба могут отправлять и получать сообщения после соединения.

Пожалуйста помоги.

const lc = new RTCPeerConnection(servers  );
const dc = lc.createDataChannel("channel");
  
lc.addEventListener("track", e => {
  console.info("Track received:", e.track);
  // Add the track to the remote stream
  if (e.streams && e.streams[0]) {
      remoteStream.addTrack(e.track);
  }
});


// --------------------------------------------------------------------------------------------------------------------------------
socket.on("becomeClient1", () => {
  console.info("Received becomeClient1 event");

  

  remoteStream = new MediaStream();
  document.getElementById("user-2").srcObject = remoteStream;



  socket.on("notifyClient1",() =>{
    console.info("cliebt2 joined++++")
  
    let init = async() => {
      localStream = await navigator.mediaDevices.getUserMedia({video:true,audio:true})
      document.getElementById("user-1").srcObject = localStream;
    }
    
    init()
    localStream.getTracks().forEach(track => {
        
      lc.addTrack(track,localStream)
      console.info("tracks added")
    });
    
    lc.onicecandidate = e => {console.info("new ice candidate " +
      JSON.stringify(lc.localDescription))
      socket.emit("recieveCLient1SDP",JSON.stringify(lc.localDescription))
    }

    dc.onmessage = e => console.info("just got a message" + e.data);
    dc.onopen = e => {
      console.info("connection opened cl1")
      dc.send("heyyyyyy")



    };

    lc.createOffer().then(o => {
      lc.setLocalDescription(o)
      console.info(o)
    
    }).then(a => console.info("set successfully"));  

  })

  socket.on("recieveAnswertoClient1", answer =>{
    console.info("+++++"+ JSON.parse(answer))
    lc.setRemoteDescription(JSON.parse(answer))
  })


});

Консоль печатает «добавленные треки» два раза, как показано на изображении.

консольный вывод

но прослушиватель событий не вызывается.

Спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это ожидаемое поведение: событие отслеживания срабатывает только для удаленных дорожек.

не могли бы вы объяснить немного подробнее? какие изменения мне следует внести?

Aamir 28.04.2024 19:37

Вам не нужно вносить изменения, вам нужно перестать думать, что вы получаете событие трека для добавленного вами трека.

Philipp Hancke 28.04.2024 21:57

понял сейчас! спасибо, что развеяли эту глупую путаницу😅

Aamir 29.04.2024 20:20

привет, извините за беспокойство. Можете ли вы помочь с этим? stackoverflow.com/questions/78426630/…

Aamir 03.05.2024 21:32

Другие вопросы по теме