Включить пользователей приложения WebRtc для загрузки журналов webrtc через javascript

Я видел следующее:

chrome://webrtc-internals 

Однако я ищу способ, чтобы пользователи могли нажимать кнопку в веб-приложении для загрузки или - предпочтительно - POST журналов WebRtc до конечной точки, запеченной в приложении. Идея состоит в том, что я могу позволить нетехническим пользователям обмениваться техническими журналами со мной через нажатие кнопки пользовательского интерфейса.

Как это можно достичь?

Примечание. Это не должно зависеть от Chrome; Хром также будет использоваться, поскольку приложение будет завернуто в Electron.

Ответы

Ответ 1

Это то, что я использовал (заменил нокаут с подчеркиванием или что-то еще):

            connectionReport.signalingState = connection.signalingState;
            connectionReport.stats = [];
            connection.getStats(function (stats) {
                const reportCollection = stats.result();
                ko.utils.arrayForEach(reportCollection, function (innerReport) {
                    const statReport = {};
                    statReport.id = innerReport.id;
                    statReport.type = innerReport.type;
                    const keys = innerReport.names();
                    ko.utils.arrayForEach(keys, function (reportKey) {
                        statReport[reportKey] = innerReport.stat(reportKey);
                    })
                    connectionReport.stats.push(statReport);
                });
                connectionStats.push(connectionReport);
            });

UPDATE:

Похоже, что этот механизм getStats скоро будет устаревшим.

Ответ 2

Вам нужно написать эквивалент javascript, который отображает все вызовы API RTCPeerConnection. rtcstats.js делает это, но передает все данные на сервер. Если вы замените это поведение на сохранение его в памяти, вы должны быть хорошими.

Ответ 3

Чтение через js-источник chrome://webrtc-internals, я заметил, что веб-страница использует метод с именем chrome.send() для отправки сообщений типа chrome.send('enableEventLogRecordings'); для выполнения команд ведения журнала. Согласно здесь:

chrome.send() - частная функция, доступная только для внутреннего хрома страницы.

поэтому функция изолирована песочницей, что делает невозможным доступ к ней