Reputation: 241
Part of code looks like this:
if (message.type === 'offer') {
console.log("got offer");
console.log(message);
pc.setRemoteDescription(new SessionDescription(message));
console.log(pc);
createAnswer();
}
else if (message.type === 'answer') {
console.log("got answer");
console.log(message);
pc.setRemoteDescription(new SessionDescription(message));
console.log(pc);
}
Calee sets remote description successfully, pc.remoteDescription
is filled. But caller... Receives the same message as callee but after pc.setRemoteDescription(new SessionDescription(message));
got pc.remoteDescription
empty and noting happens. Callee ready to receive stream, but caller gets stucked.
Upvotes: 1
Views: 1897
Reputation: 25054
I think the issue is because either setRemoteDescription
is failing, or there is a race condition between that and createAnswer
, so add it inside success callback and for clarity, add an error callback too...
something like:
if (message.type === 'offer') {
console.log("got offer");
console.log(message);
pc.setRemoteDescription(new SessionDescription(message), function(){
console.log(pc);
createAnswer();
}, console.error.bind(console));
}
else if (message.type === 'answer') {
console.log("got answer");
console.log(message);
pc.setRemoteDescription(new SessionDescription(message), console.log.bind(console, 'success'), console.error.bind(console));
}
if Promise and ES6 are supported:
if (message.type === 'offer') {
console.log("got offer");
console.log(message);
pc.setRemoteDescription(new SessionDescription(message))
.then(() =>{
console.log('success...', pc);
createAnswer();
}).catch(e => console.error(e));
}
else if (message.type === 'answer') {
console.log("got answer");
console.log(message);
pc.setRemoteDescription(new SessionDescription(message))
.then(() => console.log('success...', pc))
.catch(e => console.error(e));
}
Upvotes: 3