0

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

有什么方法可以计算出数据包从以下位置花费了多长时间:

server --> client

我正在尝试计时,所以理想情况下我的 JavaScript 函数应该是:

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

另外,我没有请求这个数据包,所以我不能记录发送时间,也不能在客户端记录接收时间。这个数据包请求不是双向的,因为我与服务器建立了一个套接字,并且服务器能够向我发送一个数据包。

任何建议都可以接受!

编辑:彗星式连接

4

1 回答 1

2

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

于 2010-01-07T18:31:13.047 回答