用JavaScript计算数据包传输时间

时间:2010-01-07 18:11:54

标签: javascript timer packet

我的服务器不时地向浏览器客户端广播数据包。

有没有办法弄清楚数据包花了多长时间:

server --> client

我正在尝试计时,所以理想情况下我的JavaScript功能就像:

var travelTime = {amount of time it took packet to get to me};
setTimeout('myFunction()', 3000 + travelTime);

此外,我没有请求此数据包,因此我无法记录发送时间,并记录客户端的接收时间。这个数据包请求不是双向的,因为我与服务器建立一个套接字,服务器只能向我发送一个数据包。

任何建议都是适当的!

编辑:彗星式连接

1 个答案:

答案 0 :(得分:2)

您可以在数据包中包含时间戳,但这取决于两个系统同步到同一时钟(例如,使用NTP)。如果您无法控制服务器和客户端,那么如果没有往返,您所要求的是不可能的。即使使用NTP同步,也会有一些抖动,具体取决于时钟同步的频率。通过往返,您的延迟计算无论如何都只是一个估计,除非客户端和服务器位于同一个LAN上,否则会因网络状况发生变化而出现严重偏差。