Я пытаюсь закончить видеочат с использованием 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;
}
}
}