使 WebRtc 应用程序的用户能够通过 javascript 下载 webrtc 日志
Posted
技术标签:
【中文标题】使 WebRtc 应用程序的用户能够通过 javascript 下载 webrtc 日志【英文标题】:Enable users of a WebRtc app to download webrtc logs via javascript 【发布时间】:2017-12-09 16:37:17 【问题描述】:我看过以下内容:
chrome://webrtc-internals
但是,我正在寻找一种方法,让用户从 Web 应用程序中单击一个按钮以下载或 - 最好 - POST
WebRtc 将日志记录到应用程序中的端点。我的想法是,我可以让非技术用户通过单击 UI 按钮与我共享技术日志。
如何做到这一点?
注意:这不应该依赖于 Chrome; Chromium 也将被使用,因为应用程序将被封装在 Electron 中。
【问题讨论】:
也许这个答案应该有所帮助:Is there an API for thechrome://webrtc-internals/
variables in javascript?
@DheerajV.S.谢谢 - 我使用它构建了一个小统计数据提取器,贴在下面。
【参考方案1】:
您需要编写一个等效的 javascript 来捕获所有 RTCPeerConnection API 调用。 rtcstats.js 会这样做,但会将所有数据发送到服务器。如果您将该行为替换为将其存储在内存中,您应该会很好。
【讨论】:
您对我发布的解决方案有何看法?这是否会提供调试大多数 WebRTC 问题所需的见解? 在大多数情况下,我发现 API 跟踪比 getStats 结果更有帮助——请参阅testrtc.com/webrtc-api-trace。此外,您正在使用应避免使用的旧版 chrome stats api。 您是否有一个示例来演示如何在客户端转储这些日志(或者甚至根本如何使用它 - 我没有看到太多关于配置的文档)?我认为这对未来的读者最有帮助。 我推送了一个提交 here——本质上是使用 npm run dist 构建捆绑版本,然后在包含的测试页面上创建一个 peerconnection 并检查 window.rtcstats.connections 我讨厌痛苦——但我还是不清楚。我认为有一个独立的例子来说明如何require
这个并在不依赖于构建节点(或某些外部服务器)的情况下使用它会帮助更多的人;就像在答案中有任何相关代码一样。如果您没有时间,请完全理解它-如果是这种情况,我可以尝试弄清楚并张贴。我认为这里最常见的用例是“允许我在客户端记录这些(或访问这些)日志,以便我可以决定如何处理它们。”一个明确的设置示例肯定会帮助其他正在寻找它的人。【参考方案2】:
这就是我最终使用的(用下划线或其他代替敲除):
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
机制似乎即将被弃用。
【讨论】:
【参考方案3】:阅读chrome://webrtc-internals
的js源码,发现网页使用chrome.send()
的方法发送chrome.send('enableEventLogRecordings');
之类的消息,执行日志命令。
根据here:
chrome.send() 是一个私有函数,只对内部 chrome 可用 页面。
所以该函数是沙盒化的,因此无法访问它
【讨论】:
以上是关于使 WebRtc 应用程序的用户能够通过 javascript 下载 webrtc 日志的主要内容,如果未能解决你的问题,请参考以下文章