6

我想知道像http://www.inspectlet.com/这样的服务是如何存储视频会话的。从外观上看,我认为这不是 webRTC 实现。我能够弄清楚有一个活动的快速套接字正在进行通信,但在这种情况下,他们将不得不存储页面并跟踪来自 DOM 的所有事件。只是想确认这是他们遵循的方法。

4

3 回答 3

3

查看页面上的事件监听器,看起来有很多绑定。例如,绑定到函数的<body>has scrollkeyup和事件。change我确定它也有mousemove,mouseclick等。所有这些都可能存储在一个 Javascript 变量(可能是对象)中,然后每隔一段时间 AJAXed 到http://hn.inspectlet.com/adddata和数据参数。以下是发送内容的示例:

http://hn.inspectlet.com/adddata?d=mr,212941,46,337,46,1277)mr,213248,163,498,163,1438)mr,213560,144,567,144,1507)mr,213873,138,240,138,1180)mr,214188,169,184,169,1124)mr,214504,158,520,158,1460)mr,214816,231,487,231,1427)mr,215130,329,197,329,1137)mr,215444,894,289,894,1229)mr,215755,903,295,903,735)s,215755,440,0)&w=259769975&r=494850609&sd=1707&sid=1660474937&pad=3&dn=dn&fadd=false&oid=99731212&lpt=212629
于 2015-10-07T14:51:53.263 回答
2

正如亚当的回答所建议的那样,他们跟踪页面中的许多事件,并通过 websocket 或发布/获取请求 (XHR) 将它们发送到他们的服务器。

我不确定检查程序具体做了什么,但总的来说,这样的解决方案需要遵循以下一般步骤:

当页面完全加载时(可能挂在 DOMContentLoaded 上),它们会将页面数据发送到服务器。然后他们还挂钩 MutationObserver 以跟踪页面中对 DOM 的所有更改,因此当动态更改时,跟踪脚本可以“记录”它并将其发送到服务器。

反过来,SaaS 应用程序将有一个播放器来解析所有这些原始数据,然后将其回放,这通常需要使用一些虚拟文件系统进行资产(图像、css、脚本)并处理 js 脚本以不再回发(重播 xhr 将对跟踪的网站产生不良结果)但在捕获(记录)时播放突变

关于数据 HTML 页面压缩得非常好,特别是当您可以对数据做出假设时(因为您知道它的 html) - 所以是的,它们实际上缓存了很多(类似于谷歌在这方面所做的事情,但谷歌这样做是为了整个网络,而不仅仅是“客户”)

DOM 突变也需要存储。这取决于算法,它既可以存储为纯文本,也可以使用更智能的数据模型,将它们存储为纯文本显然不是具有成本效益的解决方案。

以上是一个抽象,为了实现这样的解决方案,需要处理许多边缘情况,以及关于热图的大量数学和算法思考,以使其准确。

于 2015-10-09T20:26:10.140 回答
1

因此,经过长时间的搜索,能够在区块上找到一个新的有前途的解决方案,它解决了构建此类服务的所有复杂部分。它仍在开发中,但它解决了问题。下面是它的链接,

https://www.rrweb.io/

https://github.com/rrweb-io/rrweb

于 2019-07-19T07:08:58.407 回答