Je place les balises [script] dosomething() [/ script] dans l'iframe de mon serveur de comètes en utilisant des données fragmentées, mais les balises de script continuent de s'accumuler indéfiniment. Comment l'effacer après chaque balise de script?Les données du serveur de comète dans l'iframe s'accumulent-elles?
Répondre
Wipe balise script
PS: Lorsque vous souhaitez effacer les balises de script, il est probablement suivre Does comet server data in the iframe just accumulate?
Je crois que vous devriez close the connection after sometime (pas bon, voir Does comet server data in the iframe just accumulate? à la place) qui libère automatiquement la mémoire associée à cette requête. Vous devez ensuite vous reconnecter. This page dit autre chose même:
"page streaming" signifie que le navigateur découvre serveur change presque immédiatement. Cela ouvre la possibilité de mises à jour en temps réel dans le navigateur, et permet flux d'informations bidirectionnel. Cependant, il s'agit d'un départ de utilisation HTTP standard, ce qui conduit à plusieurs problèmes. Tout d'abord, il ya implications de mémoire malheureux, parce que le Javascript garder accumuler, et le navigateur doit conserver tout cela dans son modèle de page. Dans une application riche avec beaucoup de mises à jour, ce modèle va se développer rapidement , et à un moment donné une page rafraîchissement sera nécessaire pour éviter swapping disque dur, ou pire destin.
Cela vous conseille de recharger la page qui est également une option. Mais je pense que la fermeture de cette connexion (iframe) et la reconnexion pourraient également fonctionner.
Comet a beaucoup de problèmes dont vous avez besoin de pirater autour de:
- Comme vous pouvez le lire this WIKI page il a aussi des problèmes avec méthode de gestion « erreur fiable, et l'impossibilité de suivre l'état de l'appel de demande processus.".
- également Internet Explorer doit envoyer une ordure pour obtenir le processus a commencé (voir http://cometdaily.com/2007/11/05/the-forever-frame-technique/)
Voilà pourquoi je recommande encore une fois que vous utilisez socket.io (voir ci-dessous) qui prend soin de tout ce non-sens.
Socket.io
conseils que je vous d'utiliser socket.io à la place, ce qui est très bon produit. C'est supported by all major browsers. Comme vous pouvez le voir, il prend en charge beaucoup de transport (XHR, Websockets, etc) et les choix les meilleurs disponibles sur votre navigateur pour les meilleures performances.
Wipe balise script sans reconneting
Vous pouvez supprimer balise script chaque fois qu'il est exécuté en ajoutant un code lorsque le serveur imprime morceau.
<script type="text/javascript">
// Calls your message handler
app.handle("Hello World");
// Removes this script element
var scripts = document.getElementsByTagName("script"),
elem = scripts[scripts.length - 1];
elem.parentNode.removeChild(elem);
</script>
Version comprimée
<script type="text/javascript">
app.handle("Hello World");
(function(){var a=document.getElementsByTagName("script"),a=a[a.length-1];a.parentNode.removeChild(a)})();
</script>
Mais, iFrame cachés ou pour toujours Iframe est trop gênant pour l'utiliser comme Alfred mentionné. Personnellement, je pense que cette manière classique fait paraître Comet sans charme et sans charme.
jQuery flux
Ma recommandation est d'utiliser jQuery Stream, qui fournit l'interface de communication bidirectionnelle unifiée sur WebSocket et le protocole HTTP. C'est une bibliothèque JavaScript légère côté client, telle que jQuery. Le transport amélioré Iframe utilisé par jQuery Stream est différent de celui classique de plusieurs façons, requries text/plain réponse contenant uniquement des messages au lieu de la réponse text/html et vide la réponse chaque fois qu'il est géré. Selon le test de certains utilisateurs, Internet Explorer 8 utilisant le transport amélioré Iframe n'a aucun problème avec les messages de plusieurs mégaoctets (contrairement à Firefox en utilisant XMLHttpRequest comme transport, ce qui est vraiment difficile).
est beaucoup mieux que de se reconnecter. Mais utiliser socket.io est encore mieux si vous me demandez. – Alfred
merci beaucoup, jet de jquery ressemble à ça va vraiment aider – ForeverConfused
- 1. Problème de choix du serveur comète
- 2. comète comète approche
- 3. Comment stress tester le serveur de comète?
- 4. Mise en œuvre du serveur de comète pour consommer les flux Forex
- 5. Code PHP sur le serveur comète orbite
- 6. comète, comète, tordu, et websync
- 7. Serveur de comète à un seul thread rapide, possible?
- 8. Performance du dojo (enregistrement, comète, curseurs)
- 9. Erlang, membase et comète
- 10. quel code devrait être pour l'application de comète côté serveur
- 11. asp.net-pages asynchrones (comète/inverse ajax/serveur push)
- 12. Jquery realTime cartographie sans comète
- 13. C# HttpWebResponse Problème de comète
- 14. Vitesse de traitement du serveur dans les communications de données
- 15. exemple de comète. Je ne comprends pas
- 16. choisir cadre comète pour Java
- 17. Où puis-je me renseigner sur les méthodes de poussée de la comète et du client?
- 18. Comprendre la comète par l'exemple
- 19. Application de style comète avec boucles
- 20. Comment localiser les données du serveur SQL?
- 21. Comment récupérer les données du serveur
- 22. Obtenir les données du serveur et afficher
- 23. Pourquoi dois-je fermer l'événement comète pour envoyer les données? (Tomcat 6)
- 24. Remplir ListView avec les données du serveur
- 25. boost httpserver de type comète pion
- 26. Quoi de mieux pour la comète Django?
- 27. Envoyer les données du serveur au client
- 28. Comment implémenter les données de cache dans Android au lieu de charger les données du serveur
- 29. espaces vides dans les données du serveur SQL
- 30. Les données de transfert de dromaine croisées dans ie9 du serveur http vers le serveur https
Lorsque vous souhaitez effacer les balises de script, il est probablement nécessaire de suivre http://stackoverflow.com/questions/6637987/does-comet-server-data-in-the-iframe-just-accumulate/6646048#6646048 – Alfred