Вообщем, я нашёл для себя только такое рабочее решение, не знаю насколько оно правильное. Для того что бы при перезапуске screen share владельца комнаты у гостя тоже была видно, необходимо созданный stream скопировать во временную переменную, вставить временный stream, тогда всё работает и массив
connection.streamEvents
и
connection.attachStream
не переполняются.
screenShareOn() {
let thisAdminVC = this.getInstance();
this.connection.addStream({
screen: true,
oneway: true,
data: true,
streamCallback: function(stream) {
for (let i = 0; i < thisAdminVC.connection.attachStreams.length; i++) {
if (thisAdminVC.connection.attachStreams[i].idInstance.indexOf("isScreen") != -1) {
let tmpStreamID = thisAdminVC.connection.attachStreams[i].id,
tmpStream = thisAdminVC.connection.streamEvents[tmpStreamID].stream;
thisAdminVC.connection.addStream(tmpStream);
thisAdminVC.connection.renegotiate();
}
}
thisAdminVC.connection.extra.streamID = stream.id;
thisAdminVC.connection.updateExtraData();
thisAdminVC.videoContainerLocal.screen.elementHTML.appendChild(tmpStream);
}
});
this.connection.renegotiate();
}