2011-09-01 43 views
2

我正在構建一個應用程序,確切知道用​​戶何時向服務器提交請求很重要。這與服務器接收請求的時間不同,因爲在用戶按下提交和服務器收到該請求之間存在一段時間間隔(通常受到網絡流量和信元接收的變幻莫測的影響) POST請求。如何準確確定何時發送HTTP請求?

交互是通過帶有JavaScript的Web瀏覽器進行的,因此任何涉及JavaScript的解決方案都是可以接受的。我想過使用JavaScript在用戶的計算機或智能手機上獲取當前時間,並將其用作提交請求的時間戳,但這本身並不可靠,因爲用戶計算機上的時鐘可能關閉。請假定服務器上的時鐘是準確的。

+0

你需要什麼精度? – Sjoerd

+0

也許在0.3秒內? – dan

回答

3

我不認爲有可能得到一個確切價值。我認爲你可以做的最好的是發送一個非常小的校準AJAX請求,相當於服務器時間的客戶端時間。無論如何,這就是我所做的。

編輯的闡述

基本上做一個AJAX調用與客戶端時間戳(時鐘)的服務器端點。只要服務器收到客戶端時間戳,就檢索並存儲服務器時間戳。在這一點上,你可以假設時間相對相等。你不會知道網絡開銷,所以他們是不同的;他們的時鐘也可能處於不同的時區或「關閉」。

後,你有這樣的等效你可以使用兩次的差異任何其他時候從客戶校準:

  • clientTime0 - serverTime0 = clientServerDelta
  • (clientTimeX - clentServerDelta)將服務器時間與記錄clientTimeX的時間相同。
+0

你能更詳細地描述你使用的校準方法嗎? – dan