允许WebRtc应用程序的用户通过javascript下载webrtc日志

时间:2017-07-05 20:59:33

标签: javascript google-chrome-devtools webrtc electron chromium

我见过以下内容:

chrome://webrtc-internals 

但是,我正在寻找一种方法让用户点击网络应用中的按钮,以便下载或 - 最好 - POST WebRtc日志记录到应用程序中的端点。我的想法是,通过点击UI按钮,我可以让非技术用户与我共享技术日志。

如何实现这一目标?

注意:这不应取决于Chrome; Chromium也将被用作应用程序将被包含在Electron中。

3 个答案:

答案 0 :(得分:3)

这就是我最终使用的东西(用下划线或其他替换淘汰赛):

            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);
            });

<强>更新

这个getStats机制似乎很快就会被弃用。

答案 1 :(得分:3)

您需要编写一个等效的javascript来捕获所有RTCPeerConnection API调用。 rtcstats.js执行此操作但将所有数据发送到服务器。如果将该行为替换为将其存储在内存中,则应该是好的。

答案 2 :(得分:0)

通过chrome://webrtc-internals的js源读取,我注意到网页正在使用一个名为chrome.send()的方法来发送chrome.send('enableEventLogRecordings');之类的消息来执行日志记录命令。 根据{{​​3}}:

  

chrome.send()是一个仅适用于内部chrome的私有函数   页。

所以函数是沙盒的,这使得访问它不可能