11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Le sujet est pas très parlant. Je vais essayer d'expliquer au mieux ce que je souhaiterais faire.

J'ai un compte à rebours qui va, par exemple de 2 minutes à 0.

J'aimerais que les utilisateurs aient la meme valeur du compteur sur leurs ecrans. Par exemple si le compteur est rendu a 1min15 sur le pc d'un utilisateur x, il le soit aussi sur le pc de y.

Je pensais stocker en base de données la valeur actuelle du compteur mais cela implique de faire une requête à la base de données toutes les seconde et je craint que ce soit un peu lourd.

Merci d'avance.
Administrateur
Bonjour,

ça pourra peut-être aider à obtenir une réponse plus pertinente : est-ce que ça concerne une application ultra-sérieuse avec du pognon en jeu (enchère eBay, ...) ou bien est-ce qu'une légère inexactitude est acceptable ?
Ça concerne l'étude de la création d'un site d'enchère à la seconde. Donc le moins d'erreur envisageables Smiley cligne
Bonjour,

Peut-être que tu peux stocker en base uniquement la date de début, et ensuite récupérer la différence entre cette date et la date en cours au chargement de la page. Et à partir de cette info, gérer ton compte à rebours.

Céline
Sans ajax je peux donc gérer le fait que tous les visiteurs du site voient la meme valeur du compte à rebours ?
jo_link_noir a écrit :
Aucune utilité de faire de l'ajax : setInterval ou setTimeout + classe Date suffi.

De l'ajax, pas forcément. Par contre il faut une information donnée par le serveur sur restant avant la fin de l'enchère... on ne peut certainement pas compter sur l'horloge du système d'exploitation de l'utilisateur.

Le problème, c'est que si l'utilisateur «demande le temps restant» (en ajax ou en chargeant ou rechargeant la page, par exemple), que le serveur répond (en interne) à un instant T, et que la réponse du serveur arrive à l'utilisateur à un instant T + L, eh bien tu as une latence L qui peut être différente pour chaque utilisateur, de minime (150ms?) à plusieurs secondes. Ça peut être un souci.
Administrateur
Yop, si un utilisateur ne "suit pas le rythme" parce que la connexion est lente, il préférera peut-être être mis au courant. Et pour ça, il faut que le serveur soit au courant donc qu'il y ait un feedback du genre "je, client n°N, viens de recevoir la donnée du temps T"
Florent V. a écrit :
on ne peut certainement pas compter sur l'horloge du système d'exploitation de l'utilisateur.

En fait je pensais à Date pour calculer le temps écoulé depuis son dernier appel. Mais j'ai pas pensée au temps L entre la date envoyer par la page et de la création de l'objet Date.

En gros l'idée :
1. ouvre la page et retourne une date T
2. créé l'objet date en javascript et récupère la date nommé (nommé D0)
3. chaque seconde comparer D0 et la date actuelle (normalement +1s)
4. ajouter la différence à T
Modifié par jo_link_noir (01 Dec 2009 - 19:48)
Si le temps de latence est de l'ordre de quelques ms c'est pas bien grave, je pense que je vais partir de ce coté la, un temps stocké en base de donnée rafraichi toutes les secondes et je vais voir ce que ca donne en terme de performances deja.

Merci pour vos avis éclairés.