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

允许WebRtc应用程序的用户通过javascript下载WebRtc日志,javascript,google-chrome-devtools,webrtc,electron,chromium,Javascript,Google Chrome Devtools,Webrtc,Electron,Chromium,我看到了以下几点: chrome://webrtc-internals 不过,我正在寻找一种方法,让用户从web应用程序中单击一个按钮,下载或(最好是)POSTWebRtc日志到应用程序中烘焙的端点。我的想法是,我可以让非技术用户通过单击UI按钮与我共享技术日志 如何做到这一点 注:这不应依赖于铬;铬也将被使用,因为应用程序将被包裹在电子中。通过js源代码阅读chrome://webrtc-internals,我注意到该网页正在使用一个名为chrome.send()的方法来发送类似chrom

我看到了以下几点:

chrome://webrtc-internals 
不过,我正在寻找一种方法,让用户从web应用程序中单击一个按钮,下载或(最好是)
POST
WebRtc日志到应用程序中烘焙的端点。我的想法是,我可以让非技术用户通过单击UI按钮与我共享技术日志

如何做到这一点


注:这不应依赖于铬;铬也将被使用,因为应用程序将被包裹在电子中。

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

chrome.send()是一个私有函数,仅对内部chrome可用 页数


因此,该函数是沙盒式的,这使得访问它变得不可能

这就是我最后使用的(用下划线或其他内容替换knockout):

更新:


看来这种
getStats
机制很快就会被弃用。

您需要编写一个javascript等价物来捕获所有RTPeerConnection API调用。但会将所有数据发送到服务器。如果您将这种行为替换为将其存储在内存中,您应该会很好。

也许这个答案会有所帮助:@DheerajV.S。谢谢-我用它构建了一个小的统计提取器,发布在下面。你对我发布的解决方案有什么想法?这会提供调试大多数WebRTC问题所需的洞察力吗?在大多数情况下,我看到API跟踪比getStats结果更有用——请参阅。另外,您正在使用传统的chrome stats api,这应该避免。您是否有一个示例演示如何在客户端转储这些日志(或者甚至如何使用这些日志-我在配置方面没有看到太多文档)?我认为这对未来的读者来说是最有帮助的。我推动了一个提交——基本上使用npm run dist构建捆绑版本,然后在包含的测试页面上创建一个peerconnection并检查window.rtcstats.Connections我讨厌成为一个麻烦,但我仍然不清楚。我认为有一个关于如何
需要
并在不依赖于构建节点(或某个外部服务器)的情况下使用它的自包含示例将帮助更多的人;答案中包含任何相关代码也是如此。如果你没有时间的话,我完全明白了——如果是这样的话,我可以试着找出答案并发布出来。我认为这里最常见的用例是“允许我在客户端记录(或访问)这些日志,这样我就可以决定如何处理它们。”一个明确的设置示例肯定会帮助其他人寻找这些日志。
            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);
            });