我的服务器时不时地向浏览器客户端广播一个数据包。
有什么方法可以计算出数据包从以下位置花费了多长时间:
server --> client
我正在尝试计时,所以理想情况下我的 JavaScript 函数应该是这样的:
var travelTime = {amount of time it took packet to get to me};
setTimeout('myFunction()', 3000 + travelTime);
此外,我没有请求此数据包,因此我无法记录发送时间,也无法在客户端记录接收时间。这个数据包请求不是双向的,因为我与服务器建立了一个套接字,并且服务器能够向我发送一个数据包。
任何建议都值得采纳!
编辑: cometd 式连接
最佳答案
您可以在数据包中包含时间戳,但这取决于两个系统是否同步到同一时钟(例如使用 NTP)。如果您无法控制服务器和客户端,那么如果没有往返,您所要求的就是不可能的。即使使用 NTP 同步,也会存在一些抖动,具体取决于时钟同步的频率。对于往返,您的延迟计算无论如何都只是一个估计值,随着网络条件的变化,可能会出现严重偏差,除非客户端和服务器位于同一 LAN 上。
关于javascript - 在 JavaScript 中计算数据包传输时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022518/