2010-01-07 6 views
0

Mon serveur diffuse de temps en temps un paquet vers un client du navigateur.Calcul du temps de parcours des paquets en JavaScript

Est-il possible de savoir combien de temps il a fallu du paquet de:

server --> client 

J'essaie quelque chose de temps, donc idéalement ma fonction JavaScript serait comme:

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

En outre, je ne demande pas ce paquet, donc je ne peux pas enregistrer l'heure d'envoi, et consigner l'heure de réception du côté client. Cette demande de paquet n'est pas bidirectionnelle, car j'établis un socket avec le serveur et le serveur a la capacité de me renvoyer un paquet.

Un conseil est appriciated!

EDIT: connexion de style comète

+0

Faites-vous référence à une connexion de type comète, ou via un 'WebSocket' (http://www.w3.org/TR/2009/WD-websockets-20091222/)? Ou autre chose? –

+0

connexion de style comète – centerpro

Répondre

2

Vous pouvez inclure un horodatage dans le paquet, mais cela dépend des deux systèmes étant synchronisés sur la même horloge (en utilisant NTP, par exemple). Si vous n'avez pas le contrôle du serveur et du client, ce que vous demandez est impossible sans un aller-retour. Même avec la synchronisation NTP, il y aura de la gigue en fonction de la fréquence de synchronisation des horloges. Avec un aller-retour, votre calcul de latence ne sera qu'une estimation de toute façon, sous réserve de déviations importantes lorsque les conditions du réseau changent, sauf si le client et le serveur sont sur le même réseau local.