WebRTC - потоковое видео с Socket.io не работает - PullRequest
1 голос
/ 20 мая 2019

Я создаю потоковое видео с помощью Socket.io (Nodejs) и WebRTC. Я думаю, что я делаю все правильно, но даже локальный поток не появляется (ни удаленный). я использую этот код для реализации того, что я хочу

 const pc = new RTCPeerConnection(configuration)
 call.onclick = async () => {
    localVideo.srcObject = await navigator.mediaDevices.getUserMedia({
        video: true,
        audio: true
    });
    for (const track of localVideo.srcObject.getTracks()) {
        pc.addTrack(track, localVideo.srcObject);
    }
 };
 pc.ontrack = e => remoteVideo.srcObject = e.streams[0];
 pc.oniceconnectionstatechange = e => console.log(pc.iceConnectionState);   
 pc.onicecandidate = (e) => {
    socket.emit('candidate', {
         candidate: e.candidate
    })
 }
 pc.onnegotiationneeded = async e => {
    await pc.setLocalDescription(await pc.createOffer());
    socket.emit('sdp', {
         sdp: pc.localDescription
    }); 
 }

 socket.on('data', (data) => {
    if (data.sdp) {
    pc.setRemoteDescription(new RTCSessionDescription(data.sdp));
        if (data.sdp.type == "offer") {
             pc.setLocalDescription(pc.createAnswer());
             socket.emit('sdp', {
             sdp: pc.localDescription
             })
        }
    } else if (data.candidate) {
          pc.addIceCandidate(new RTCIceCandidate(data.candidate))
      }
 })

А вот код на стороне сервера:

 socket.on('sdp', function(data) {
  socket.broadcast.emit('data',{sdp: data.sdp});
});

socket.on('candidate', function(data) {
  socket.broadcast.emit('data',{candidate: data.candidate});
});

Консоль понятна, но все равно не работает. Так в чем проблема? И как я могу решить это? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...