Javascript 考虑到网络延迟,您如何准确确定何时发送HTTP请求?

Javascript 考虑到网络延迟,您如何准确确定何时发送HTTP请求?,javascript,http,datetime,Javascript,Http,Datetime,我正在构建一个应用程序,在这个应用程序中,准确地知道用户何时向服务器提交请求非常重要。这与服务器接收请求的时间不同,因为从用户按下submit到服务器接收POST请求之间有一段时间间隔,这段时间间隔通常取决于网络流量和小区接收的变化 交互是通过带有JavaScript的web浏览器进行的,因此任何涉及JavaScript的解决方案都是可以接受的。我曾考虑使用JavaScript获取用户计算机或智能手机上的当前时间,并将其作为提交请求的时间戳,但这本身并不可靠,因为用户计算机上的时钟可能会关闭。请

我正在构建一个应用程序,在这个应用程序中,准确地知道用户何时向服务器提交请求非常重要。这与服务器接收请求的时间不同,因为从用户按下submit到服务器接收POST请求之间有一段时间间隔,这段时间间隔通常取决于网络流量和小区接收的变化

交互是通过带有JavaScript的web浏览器进行的,因此任何涉及JavaScript的解决方案都是可以接受的。我曾考虑使用JavaScript获取用户计算机或智能手机上的当前时间,并将其作为提交请求的时间戳,但这本身并不可靠,因为用户计算机上的时钟可能会关闭。请假定服务器上的时钟是准确的。

您可以尝试以下方法:


要计算准确的JavaScript时钟,请在POST请求中传递该值。

我认为不可能得到准确的值。我认为您最好发送一个非常小的校准AJAX请求,将客户端时间与服务器时间等效。不管怎么说,我就是这么做的

编辑以进行细化

基本上,使用客户机时间戳(时钟)对服务器端点进行AJAX调用。一旦服务器收到客户机时间戳,检索并存储服务器时间戳。此时,您可以假设时间相对相等。您不知道网络开销,因此它们会有所不同;此外,他们的时钟可能在不同的时区或只是“关闭”

获得此等效性后,您可以使用这两个时间的差值从客户端校准任何其他时间:

  • clientTime0-serverTime0=clientServerDelta
  • (clientTimeX-clentServerDelta)的服务器时间与录制clientTimeX时的服务器时间大致相同

您能更详细地描述一下您使用的校准方法吗?