Краевой вопрос для ручки кандидата - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь закончить видеочат с использованием webrtc и adapter.js в Chrome работает нормально, но в EI Edge нет, сначала покажите мне это предупреждение Timeout for addRemoteCandidate.Подумайте об отправке уведомления об окончании кандидатов, которое пришло от adapter.js. Я не знаю, как можно решить эту проблему, может кто-нибудь мне помочь, пожалуйста.

/*===========================================
* handle offer 
============================================*/
async function handleOffer(offer) {
    await handleJoinSuccess();

    console.log('receiver offer: ', offer);
    try {
        let remoteSessionDescriptions = new RTCSessionDescription(offer);

        await pc.setRemoteDescription(remoteSessionDescriptions)
        console.log('remote is set');

        const answer = await pc.createAnswer();

        if (!state.iAmCaller) {
            await pc.setLocalDescription(answer)
        }

        await socketVideoEmit('answer', answer);
        console.log(TAG, 'socketEmit')
    } catch (error) {
        console.log('error', error)
    }
}


function handleAnswer(answer) {

    pc.setRemoteDescription(new RTCSessionDescription(answer));
    console.log('remote is set');
}

вот моя функция для обработки этого

function handleIceCandidate(candidate) {

    console.log(candidate);

    pc.addIceCandidate(new RTCIceCandidate(candidate)).catch(error => {
        console.log('error adding icecandidate', error)
    });    

}

Вот кандидатный сокет

function onReceivedVideoMessage(data) {
    console.log(TAG + 'onReceivedVideoMessage(data)', data)
    if (data.toid == IM_USERID) {
        let videoChatSocketTag = data.type;
        switch (videoChatSocketTag) {
            case "offer":
                setState({ connectionState: ConnectionStates.receivedOfferState })
                handleOffer(data.data);
                break;
            case "answer":
                setState({ connectionState: ConnectionStates.receiveAnswerState })
                handleAnswer(data.data);
                break;
            case "candidate":
                setState({ connectionState: ConnectionStates.receivedIceCandidateState });
                console.log('receiver candidate');
                handleIceCandidate(data.data);
                break;
        }
    }
}
...