您如何确定何时(考虑网络延迟)发送HTTP请求?

时间:2011-09-01 13:29:45

标签: javascript http datetime

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

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

2 个答案:

答案 0 :(得分:3)

我认为不可能获得完全值。我认为您可以做的最好的事情是发送一个非常小的校准AJAX请求,该请求与服务器时间相当于客户端时间。无论如何,这就是我所做的。

编辑以进行详细说明

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

在您具有此等效性后,您可以使用两次的差异来校准客户端的任何其他时间:

  • clientTime0 - serverTime0 = clientServerDelta
  • (clientTimeX - clentServerDelta)在的服务器时间与记录clientTimeX时相同。

答案 1 :(得分:2)

你可以试试这个:

http://jehiah.cz/a/ntp-for-javascript

计算准确的JavaScript时钟,然后使用POST请求传递该值。