Всякий раз, когда я разрешаю доступ к веб-камере в Chrome как часть настройки многосторонней или p2p-конференции, я ожидаю получить уведомление streamCreated, которое не приходит. Моя камера включается, и «обработчик Google Chrome» для страницы переходит на 100% загрузку ЦП. Когда я приостанавливаю выполнение потока, я обнаруживаю, что выполнение находится где-то глубоко внутри TB.min.js. Вот как выглядят соответствующие части моего кода:
void meetingInProgress(info) {
var session = TB.initSession(info.sessionId);
session.connect(info.apiKey, info.token);
session.addEventListener("sessionConnected", function(e) {
console.log("Connected to session");
subscribeToStreams(session, e.streams);
session.publish("selfview", { name: name });
});
session.addEventListener("streamCreated", function(e) {
console.log("New stream");
subscribeToStreams(session, e.streams);
});
}
var subscribeToStreams = function(session, streams) {
var selfId = session.connection.connectionId;
console.log('Subscribing to streams, self id:', selfId);
console.log('No. of streams:', _.size(streams));
_.forEach(streams, function(s) {
console.log('Stream id: ', s.connection.connectionId);
if (s.connection.connectionId == selfId) {
console.log('Toggling');
$("#selfview").toggle();
}
else
session.subscribe(s, addViewport(), { width: 640, height: 480 });
});
console.log('Done subscribing to streams...');
}
Мне кажется, что если элемент div издателя скрыт, возникает проблема с получением события streamCreated. Я надеялся показать панель div издателя только тогда, когда пользователь действительно одобряет использование камеры. Когда я отключаю это переключение видимости div, кажется, что все работает лучше.