WebRTC не работает getUserMedia

Смотрел этот видос и переписывал код
C самого начала я написал npm init, везде проставил Enter
потом установил:
npm install budo --save
npm install simple-peer --save

В package.json написано:

{
  "name": "p2p-videochat",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "budo index.js:bundle.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "budo": "^11.6.3",
    "simple-peer": "^9.7.2"
  }
}

Запускаю проект, написав npm start

C самого начала я пробовал просто navigator.getUserMedia и у меня не заработало, поэтому я попробовал использовать полифилл с сайта MDN

navigator.mediaDevices.getUserMedia не работает и navigator.getUserMedia
Пишет такую ошибку:
Error: getUserMedia is not implemented in this browser

Прочитал в гугле, что это может быть из-за небезопасного соединения
в chrome://flags/ для #unsafely-treat-insecure-origin-as-secure включил, но так тоже не работает

//if (navigator.mediaDevices === undefined) {
//  navigator.mediaDevices = {};
//}

// Некоторые браузеры частично реализуют свойство mediaDevices, поэтому 
//мы не можем присвоить ссылку на объект свойству getUserMedia, поскольку 
//это переопределит существующие свойства. Здесь, просто добавим свойство 
//getUserMedia , если оно отсутствует.

if (navigator.mediaDevices.getUserMedia === undefined) {
  navigator.mediaDevices.getUserMedia = function(constraints) {

    // Сначала, если доступно, получим устаревшее getUserMedia

    var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;

    //Некоторые браузеры не реализуют его, тогда вернем отмененный промис
    // с ошибкой для поддержания последовательности интерфейса 

    if (!getUserMedia) {
      return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
    }

    // Иначе, обернем промисом устаревший navigator.getUserMedia 

    return new Promise(function(resolve, reject) {
      getUserMedia.call(navigator, constraints, resolve, reject);
    });
  }
}

navigator.mediaDevices.getUserMedia({
    audio: true,
    video: true
  })
  .then((stream) => {
    init(stream);
  })
  .catch((err) => {
    console.error(err);
  })


function init(stream) {
  console.log(1);
  const Peer = require('simple-peer');
  const peer = new Peer({
    initiator: location.hash === '#init',
    trickle: false,
    stream: stream
  });

  const yourId = document.querySelector('#yourId');
  const otherId = document.querySelector('#otherId');
  const connect = document.querySelector('#connect');
  const send = document.querySelector('#send');
  const yourMessage = document.querySelector('#yourMessage');
  const messages = document.querySelector('#messages');

  peer.on('signal', (data) => {
    yourId.value = JSON.stringify(data);
  });

  connect.addEventListener('click', () => {
    const valueOtherId = JSON.parse(otherId.value);
    peer.signal(valueOtherId);
  });

  send.addEventListener('click', () => {
    const valueYourMessage = yourMessage.value;
    peer.send(valueYourMessage);
  });

  peer.on('data', (data) => {
    messages.textContent += data + '\n';
  });
}
*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

#video__conf {
    display: flex;
    flex-direction: column;
    max-width: 250px;
    padding: 10px;
}

#video__conf > *:not(:last-child) {
    margin-bottom: 20px;
}

textarea {
    min-height: 100px;
}
<div id="video__conf">

  <label>Your ID:</label>
  <textarea id="yourId"></textarea>
  <label>Other ID:</label>
  <textarea id="otherId"></textarea>
  <button id="connect">connect</button>

  <label>Enter Message:</label>
  <textarea id="yourMessage"></textarea>
  <button id="send">send</button>
  <pre id="messages"></pre>

</div>


Ответы (0 шт):