Не удалось получить звонок от другого пользователя, Stream не показывает WebRTC - PullRequest
0 голосов
/ 05 сентября 2018

Случайный идентификатор Генерация функции для подключения

 function guid() {
                function s4() {
                    return Math.floor((1 + Math.random()) * 0x10000)
                            .toString(16)
                            .substring(1);
                }
                return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
                        s4() + '-' + s4() + s4() + s4();
            }

    var id = guid();
    // Initialize a new peer and connect to our server
    var peer = new Peer(id, {
        host: 'webrtc-server-peerjs.herokuapp.com',
        port: 443,
        secure: true,
        debug: 1
    });
    peer.on('error', function (err) {
        console.log(err);
        alert(err);
    });

Функция вызова ручки

function handleCall(call) {
            call.on('stream', function (remoteStream) {
              console.log(remoteStream);
                console.log('set thier');
                $('#call').hide();
                $('#their-video').show();
                //$('#their-video').prop('src', URL.createObjectURL(remoteStream));
                $('#their-video').srcObject=remoteStream;
            });
        }
    // Setting for chrome
    var constraints = window.constraints = {
        audio: true,
        video: true
    };
    navigator.mediaDevices.getUserMedia(constraints)
            .then(function (stream) {
                window.localStream = stream;
                //$('#my-video').prop('src', URL.createObjectURL(stream));
                $('#my-video').srcObject=stream;
                peer.on('call', function (call) {
                    call.answer(stream); // Answer the call with an A/V stream.
                    handleCall(call);
                });
            });

Корневая функция вызывается при загрузке страницы

$(document).ready(function () {
    $('#number').text(id);
    $('#call').on('click', function () {
        $(this).button('loading');
        var id = prompt("Enter ID");
        var call = peer.call(id, window.localStream);
        handleCall(call);
    })
    })

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

Ошибка ОШИБКИ: (OperationError) Не удалось установить локальное предложение sdp: Вызывается в неправильном состоянии: kHaveRemoteOffer

1 Ответ

0 голосов
/ 05 сентября 2018

какую версию peerjs вы используете? Я исправил аналогичную проблему в https://github.com/peers/peerjs/pull/430, поэтому обновление до последней версии может решить вашу проблему.

...