Я пытаюсь создать приложение для видеоконференцсвязи, в котором все одноранговые узлы подключаются ко мне sh, я делаю, когда одноранговый узел присоединяется к комнате, они передают свой идентификатор всем присутствующим в комнате, и все перезванивают вещателю с идентификатором. Иногда он может подключиться ко всем, но в других случаях вещатель получил все предложения, но отправил обратно только некоторые ответы, пропуская другие предложения. Есть ли способ использовать async / await для обработки и отправки ответов один за другим? Я новичок в javascript и WebRT C, много чего пробовал, но не могу понять.
Код для обработки предложений:
socket.on('message',function(message) {
if(message.type === 'offer') {
if(message.specific === clientId){
if(message.isSuperNode === false)
isNodeCap++;
createPeerConnection(message.userid,message.isSuperNode);
pc.peerConnection.addStream(pc.mixer.getMixedStream());
pc.peerConnection.setRemoteDescription(new RTCSessionDescription(message));
console.log("Offer Received");
localPeerList.push(pc);
doAnswer(message.userid);
}
});
function createPeerConnection(userid,isSN) {
try {
var obj ={};
obj.peerConnection = new RTCPeerConnection(pcConfig);
obj.mixer = new MultiStreamsMixer([localStream]);
obj.mixer.startDrawingFrames();
obj.connectionWith = userid;
obj.isSuperNode = isSN;
obj.peerConnection.onicecandidate = handleIceCandidate
obj.peerConnection.onaddstream = handleRemoteStreamAdded;
obj.peerConnection.onremovestream = handleRemoteStreamRemoved;
pc = Object.assign({},obj);
console.log('Created RTCPeerConnnection');
} catch (e) {
console.log('Failed to create PeerConnection, exception: ' + e.message);
alert('Cannot create RTCPeerConnection object.');
return;
}
}
function doAnswer(userid) {
console.log('Sending answer to peer.');
pc.peerConnection.createAnswer().then(function(offer){
pc.peerConnection.setLocalDescription(offer).then(function(){
answering = true;
}
).catch(function(e) {
alert(e.name);
});
});
}