检查台和其他服务如何存储用户视频会话?

时间:2015-10-07 14:44:15

标签: javascript jquery ruby-on-rails node.js express

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

此致 Muaaz Rafi

3 个答案:

答案 0 :(得分:2)

查看页面上的事件侦听器,看起来有很多绑定。例如,<body>包含绑定到函数的scrollkeyupchange个事件。我确定它还有mousemovemouseclick等等。所有这些都可能存储在Javascript变量(可能是对象)中,然后经常存储到http://hn.inspectlet.com/adddata的AJAX用数据参数。以下是发送内容的示例:

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

答案 1 :(得分:2)

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

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

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

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

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

还需要存储DOM Mutations。这取决于算法,它可以存储为纯文本或使用更智能的数据模型,以纯文本形式存储它们显然不是经济有效的解决方案。

上面是一个抽象概念,为了实现这样的解决方案,还有许多边缘情况需要处理,以及关于热图的大量数学和算法思想,以使它们准确。< / p>

答案 2 :(得分:0)

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

  

https://www.rrweb.io/

     

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