Websocket计时:如何获得websocket消息到达浏览器的确切时间?

时间:2016-01-13 07:22:25

标签: datetime web-applications websocket messaging

我正在编写一个使用websockets进行客户端和服务器之间双向通信的Web应用程序。我主要担心的是用户感知的延迟,因此,我正在测量和分析我能做的任何事情。特别是,我在onmessage()事件中捕获当前时间。这很有用,但我也想知道事件何时被推入浏览器的事件循环 - 这是在onmessage事件被触发之前发生的。

在Chrome开发者工具中,我在" Network-> Frames"中看到了时间。 tab,我认为是事件进入事件循环的时间。但我需要在Javascript中以编程方式捕获它。知道怎么做吗?

我做了一些" console.log"并在少数情况下看到了开发人员工具中显示的时间与我在onmessage事件中捕获的时间之间差异大约10毫秒。我希望我的测量结果能够显示差异是否总是小到10毫秒,或者由于渲染或页面中发生的其他事情,有时差异是否会更高。

enter image description here

2 个答案:

答案 0 :(得分:1)

websocket的浏览器api太受限制,无法公开您想要的信息。

浏览器开始使用Performance interface公开定时信息,但该接口只会告诉您与websocket服务器的初始连接的时间信息,它不知道websocket框架

答案 1 :(得分:0)

根据您对问题的描述,没有必要。 http堆栈收到你的消息和它在应用程序中传递给你的时间之间的延迟是可以忽略不计的,几乎肯定低于javascript datetime值的精度(你可以使用performance.now,但是我怀疑它实际上有多精确。)

您的延迟将由网络因素和服务器响应时间驱动 - 如果您可以获得合理的测量结果,那么您将成为您想要的位置。其他因素可能会导致测量“噪音” - 只要它低于您尝试测量的值的10%,就没有问题。