Probleme avec un timer sous IE [JavaScript] - HTML/CSS - Programmation
Marsh Posté le 26-01-2005 à 19:34:19
Un petit up en esperant que cette fois-ci quelqu'un ait une solution...
Sinon je vais devoir faire l'emulation de la communication entre deux "threads".
J'avais pense a transformer mon TimedSocket comme ceci :
Au lieu de relancer le timer quand je recois une info, je relance le timer toutes les secondes (comme un BasicTimer en fait). A la difference que je "bloque" l'envoi d'une nouvelle requette tant que l'autre n'as pas eu de reponse. Je pensais faire ca via un boolean pour savoir si le socket est "libre".
Sa ressemble vaguement a une sorte de communication entre deux threads .
Marsh Posté le 23-01-2005 à 04:53:21
J'ai un petit probleme a vous soumetre.
Pour commencer voila le lien de ma page de test :
http://www.point6.ch/~cerel/test.html
J'ai cree un "objet" BasicTimer qui "implemente" un timer tout con. Il fonctionne nickel sur FF et sur IE.
J'ai un autre "objet" TimedSocket qui "implemente" un "socket" (XMLHttpRequest) avec un timer. Son fonctionnement est assez simple. Lorsqu'il est cree il envoi le requette au serveur. Une fois qu'il la recoit il l'a traite puis ajoute un timer afin de renvoyer la meme requete 1 sec plus tard.
Sur FF pas de probleme sa fonctionne.
Sur IE seul la premiere requette est envoyee. Lorsque le socket recoit l'info et que cette derniere est traitee le timer n'est pas installe alors qu'il le devrait... Le code est le meme que dans BasicTimer, il a simplement "bouge".
Dans BasicTimer je reinstalle le timer une fois qu'il appelle la fonction. Dans TimerSocket la fonction envoi la requete est retourne. Mais le timer est reinstalle une fois que la reponse arrive. Cette derniere arrive bien sur IE, en tout cas la premiere.
Je suis au courant du probleme de "cache" sur IE, mais meme en integrant une "seed" dans la requete (afin qu'IE pense que ce n'est pas la meme requete et du coup ne regarde pas dans son cache) cela ne change rien au probleme, puisque le 2e envoi n'est pas "lance" etant donne que le timer n'est pas installe.