|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre actif
![]() |
Bonjour,
J'ai créé une application web, dont tous les liens ne fonctionnent qu'en Ajax: la page n'est jamais rechargée, et toutes les fonctions JavaScripts sont chargées au départ. J'ai rajouté un chat, qui fonctionnait correctement jusque-la en faisant une requete réguliere sur une table de ma base. Mais c'est lourd, et je souhaite le modifier pour utiliser les sockets. J'ai fait un test qui fonctionne, mais lorsqu'il s'agit de l'intégrer a mon site, gros probleme: en effet, l'execution du script de connection a la socket (pour la réception des nouvelles données) ne s'arrete jamais, et en conséquence, mon browser ne veut plus charger aucun script tant que le précédent - celui qui se connecte a la socket - n'a pas fini de s'éxécuter. Mon objet XMLHttpRequest est tout simple, asynchronous et il renvoie sa réponse sur ReadyState=3. Voici ma fonction JavaScript: Code :
Code :
Thomas PS: Je ne sais pas si ce probleme peut se solutionner juste par Ajax, ou par PHP, mais dans tous les cas je pense que c'est sur ce forum que vous etes le plus susceptible de connaitre le fonctionnement des sockets. |
||||
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() ![]() Inscription : août 2006 Messages : 313 ![]() |
Ne peux tu pas faire ton setTimeout sur bbnjs_chat_reception().
Ainsi, ton script n'est executé qu'une fois tous les 100 ms et evite ce genre de galere de boucle infini http://jacques-guizol.developpez.com...x/Tableaux.php Je te renvoie aussi sur ce tuto javascript, mine de rien il parle d'un truc interessant. Utiliser une pile avec un tableau Je sais qu'il est possible de realiser une pile d'action en javascript (le frameworks dojo le fait), ça doit pouvoir resoudre ton probleme Ainsi tu rajoutes ton action cliquer sur un lien dans ta pile d'action et a la fin de ton javascript, au lieu de reboucler sur ta fonction, tu reboucles sur le tableau et tu rajoutes ta fonction socket a la fin du tableau |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() |
Merci Phelim pour ta réponse, mais je ne suis pas sur de comprendre:
-si je fais mon setTimeOut sur ma fonction bbnjs_chat_reception(), cale va recharger mon script de socket a chaque fois. Or, le fichier server de socket va voir ce rechargement comme autant de déconnections de la socket. Par ailleurs, je crois qu'en matiere de ressource, c'est un mécanisme que je souhaitais éviter en utilisant les sockets... - J'ai lu le tutoriel que tu indiques sur les tableaux, mais je ne vois pas ce que tu veux dire par "créer une pile d'actions" Merci pour ton aide! |
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() ![]() Inscription : août 2006 Messages : 313 ![]() |
Désolé, apres les sockets, ça depasse ma competence actuelle. Je n'ai jamais travaillé avec en php ou en javascript.
Pour la pile, il s'agit seulement d'organiser des fonctions de maniere à ce qu'elle se lance dans un ordre que tu definis. Si tu lances ta fonction socket en dernier, ça peut peut etre resoudre ton probleme. Apres pour les sockets, les seuls solutions que j'ai trouvé sur le net utilise un pont avec flash. Peut etre une option à etudier.
|
|
|
00
|
|
|
#5 |
|
Membre actif
![]() |
Merci pour ton aide en tout cas.
Je vais essayer de reposter mon probleme sur un forum JS, car en fait ma vraie question maintenant devrait etre: Puis-je lancer un script continu par AJAX sans bloquer les scripts suivants? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com