Как отклонить предложение или позвонить в peerjs - PullRequest
0 голосов
/ 21 февраля 2019

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

это мой клиент отправителя

const peer = new Peer('sender', { host: '1.0.0.99', port: 9000, path: '/' })
var call = document.getElementById('call');
call.addEventListener('click',startChat);


    function startChat(){
      navigator.mediaDevices.getUserMedia({ video: true}).then((localStream) =>{
        document.querySelector('video#local').srcObject = localStream;
        var call = peer.call('receiver',localStream);
        call.on('stream',remoteStream => {
            document.querySelector('video#remote').srcObject = remoteStream
        })
      })
    }

это мой получатель

const peer = new Peer('receiver', { host: '1.0.0.99', port: 9000, path: '/' })


peer.on('call', call => {
    const startChat = async () => {
        const localStream = await navigator.mediaDevices.getUserMedia({
            video: true
        })
        document.querySelector('video#local').srcObject = localStream
        // call.answer(localStream)
        call.close(mediaStream);
        call.on('stream', remoteStream => {
            document.querySelector('video#remote').srcObject = remoteStream
        })
    }
    startChat();
})

моя цель на получателе может быть отклонена и принята извините Я новичок в этом, спасибо за любую помощь

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

ну я нашел путь

peer.on('call', call => {

    var acceptsCall = confirm("Videocall incoming, do you want to accept it ?");

    if (acceptsCall) {
        const startChat = async () => {
            const localStream = await navigator.mediaDevices.getUserMedia({
                video: true
            })
            document.querySelector('video#local').srcObject = localStream
            call.answer(localStream)
            call.on('stream', remoteStream => {
                document.querySelector('video#remote').srcObject = remoteStream
            });

            // Handle when the call finishes
            call.on('close', function () {
                alert("The videocall has finished");
            });
        }
        startChat();
    } else {
        alert('call decline!');
    }

})
0 голосов
/ 21 февраля 2019

Согласно официальной документации, API-интерфейс MediaConnection гласит, что для отклонения вызова следует использовать метод close(), а для приема - метод answer().В своем коде вы пробовали оба варианта, даже если передавали аргумент функции close(), которая не принимает ничего.Теперь, если вы закроете Media Connection, я предполагаю, что обратный вызов в сообщении 'stream' недопустим.

...