Bonjour =)
Je vient de développer une classe pour faire un Chat en Ajax/sockets php. Un des fonction consiste a lancer un script d'écoute, afin d'afficher les sockets reçu.
M'étant directement inspiré d'une fonction déjà existante sur le web, j'ai essayé de modifier cette fonction pour utiliser la librairie Protoype, que j'utilise régulièrement. La fonction d'origine ne fonctionnant pas sous IE
Voici la fonction en question:
J'ai tenter ceci, mais ce n'est pas très efficace ^^:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 function listen() { setScroll(); var xhr_object = null; if(window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); else { if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else // XMLHttpRequest non supporté par le navigateur { alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } } var method = "POST"; var filename = "getajax.php"; var requete = "module=chatv&script=listen"; var taille = 0; //Le nombre de caractères déjà reçus var update = function() { if(xhr_object.readyState == 3 && xhr_object.responseText.length > taille) { taille = xhr_object.responseText.length; var reponse = xhr_object.responseText; $("chatContentReal").innerHTML = reponse; setScroll(); } setTimeout(update,1000); }; update(); xhr_object.open(method, filename, true); xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.send(requete); }
Avec ce code, l'affichage ne se fait que lorsque la fonction est interrompu (fermeture de la fenêtre par exemple) Comment rentrer dans onSuccess (changer onSuccess ? par quoi ?) sans que le script php ne soit terminé ? (vu qu'il tourne en boucle pour écouter le serveur)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function listen() { setScroll(); var update = function() { var ajaxRequest = new Ajax.Request('getajax.php', { parameters: {module: 'chatv', script: 'listen'}, method: 'post', onSuccess: function(e) { $("chatContentReal").innerHTML = reponse; setScroll(); } }) } update(); }
Je ne vois pas trop comment faire :/
si vous avez une idée :D