2010-01-07 47 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同步,也会有一些抖动,具体取决于时钟同步的频率。在往返旅程中,您的等待时间计算只能作为一个估计值,除非客户端和服务器位于同一局域网中,否则网络状况会发生严重偏差。