2010-01-07 42 views
0

我的服務器現在每隔一段時間就向瀏覽器客戶端廣播一個數據包。使用JavaScript計算包的旅行時間

有什麼辦法找出它從包花了多長時間從:

server --> client 

我想時間的東西,所以我的理想JavaScript函數會像:

var travelTime = {amount of time it took packet to get to me}; 
setTimeout('myFunction()', 3000 + travelTime); 

另外,我沒有請求這個數據包,所以我不能記錄發送時間,並在客戶端記錄接收時間。這個數據包請求不是雙向的,因爲我與服務器建立了一個套接字,服務器有能力給我一個數據包。

任何建議appriciated!

編輯:彗星式連接

+0

您是指彗星式連接,還是通過'WebSocket'(http://www.w3.org/TR/2009/WD-websockets-20091222/)?或者是其他東西? – 2010-01-07 18:15:02

+0

彗星式連接 – centerpro 2010-01-07 18:16:09

回答

2

你可以包括在數據包的時間戳,但是這將取決於兩個系統同步到同一時鐘(使用NTP,例如)。如果你無法控制服務器和客戶端,那麼你所要求的是不可能的,而不需要往返。即使使用NTP同步,也會有一些抖動,具體取決於時鐘同步的頻率。在往返旅程中,您的等待時間計算只能作爲一個估計值,除非客戶端和服務器位於同一局域網中,否則網絡狀況會發生嚴重偏差。