2010-06-01 6 views
2

Je veux charger les données de mon serveur web, je veux que ce soit le chemin AJAX/Comet, mon serveur web tient la requête depuis longtemps, réponds jusqu'à ce que quelque chose se passe. Ainsi, je l'ai écrit un code AS3 comme ceci:Comment faire une longue traction de comète avec ActionScript3?

private function load(): void { 
     var request:URLRequest = new URLRequest(url); 
     var variables:URLVariables = new URLVariables(); 
     variables.tick = this.tick; 
     request.data = variables; 
     urlLoader = new URLLoader(request); 
     urlLoader.addEventListener(Event.COMPLETE, onComplete); 
     urlLoader.addEventListener(IOErrorEvent.IO_ERROR , onIOError); 
     log.info("Loading info from {0}", request.url); 
    } 

Il fonctionne, si le temps d'attente est courte, mais cependant, il a échoué avec IOError 2032, semble le temps d'attente est sorti. Voici le problème, comment puis-je faire un long interrogation avec as3 et éviter l'erreur de timeout?

Merci.

Répondre

2

Je suggère d'utiliser BlazeDS pour ce genre de choses. Vous pouvez rencontrer beaucoup de problèmes si vous voulez construire votre propre mécanisme d'interrogation et vous devrez écrire beaucoup de code. En ce qui concerne votre problème, le lecteur Flash utilise la pile du navigateur pour la communication, de sorte que votre demande échouera même si vous avez une application html/js. Consultez la documentation de votre navigateur pour savoir comment augmenter le délai d'expiration.

+0

Convenu - vous voulez certainement utiliser BlazeDS pour ce genre de chose. Il contient déjà une API à interrogation longue qui fera probablement tout ce dont vous avez besoin, avec une bonne documentation et une bonne gestion des erreurs. –

1

Vous pouvez utiliser un URLStream en tant que socket (au moins pour la lecture) et envoyer des données fantômes du serveur. Disons 0x00 marques keepalive et 0xFF marque le contenu, suivi par une longueur de contenu de 32 bits et le contenu lui-même. N'oubliez pas de vider du côté serveur, sinon le serveur pourrait décider de conserver le 1 octet dans son tampon.

Egalement flexcomet peut également vous intéresser.

greetz
back2dos

Questions connexes