我正在尝试弄清楚如何计算通过网络应用程序(Javascript)到.net网络服务的请求的延迟。
目前,我基本上尝试同步客户端和服务器时间,当访问网络服务时,我可以查看偏移量(这将准确显示“向上”延迟。
问题是 - 当您同步时间时,您还必须考虑延迟。因此,目前我正在对同步请求(往返)进行计时并除以 2,试图获得“向上”延迟……然后相应地修改同步。
这是基于延迟对称的假设,但事实并非如此。有谁知道一个程序能够专门确定 JS http 请求到 .net 服务的上/下延迟?如果需要多次握手也没关系,只要尽可能准确即可。
谢谢!!
最佳答案
老实说,我认为这是一项艰难的任务,或者说是不可能的。
您可能可以做很多事情来或多或少地接近您想要的。我可以看到两种方法来解决这个问题:
- 使用 NTP 之类的工具来同步时钟并使用绝对时间戳。这将相当容易,但当然只有当您同时控制服务器和客户端时才有可能(您可能不这样做)。
- 尝试做出有根据的猜测:)这将与您现在正在做的事情类似。也许
ping
可以提供一些帮助?
以下文章可能会提供一些额外的想法:A Stream-based Time Synchronization Technique For Networked Computer Games .
主要是建议进行多次测量并丢弃“异常值”。但如果我理解正确的话,最终它与您当前的实现并没有那么远。
否则,有一些学术 Material 可用于更具理论性的方法(我的意思是,首先阅读一些内容)。这些是我发现的一些东西:Time Synchronization in Ad Hoc Networks和 A clock-sampling mutual network time-synchronization algorithm for wireless ad hoc networks 。或者您可以查看 NTP 协议(protocol)。
不过我还没有读过这些:)
关于c# - 如何确定网络应用程序的上行/下行延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2871230/