Partage
  • Partager sur Facebook
  • Partager sur Twitter

Salon de tchat

Comment actualiser des qu'un message arrive

Sujet résolu
    1 août 2009 à 11:36:07

    Bonjour, je voudrais réaliser un salon de tchat. Les membres inscrits y accède puis envoi leur message, si un autre membre et sur le salon, le message apparait sans rechargement de la page.

    J'ai déjà réaliser le code pour envoyer un message et l'afficher, mais comment faire pour que les visiteur ne doivent pas actualiser à chaque fois leur page pour voir s'il y a de nouveau message ?

    Pouvez vous m'orienter vers des tutos, astuces, ou morceau de code qui pourrait m'aider ?

    Merci de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      1 août 2009 à 12:02:24

      Pour effectuer des requêtes HTTP sans recharger toute la page, il te faut utiliser la technologie Ajax. Je te redirige donc vers le tuto à ce sujet :
      http://www.siteduzero.com/tutoriel-3-4 [...] vascript.html

      La solution la plus courante pour les tchats, est d'effectuer une requête, toutes les secondes par exemple, qui vérifie la présence de nouveaux messages. ;)
      • Partager sur Facebook
      • Partager sur Twitter
        1 août 2009 à 12:10:04

        Elle vérifie si un nouveau message est dans la BDD ? mais cela demande beaucoup de bande passante non ?
        • Partager sur Facebook
        • Partager sur Twitter
          1 août 2009 à 12:14:36

          Il y a aussi la solution (qu'utilise Facebook par exemple) : le long polling. Ça fait moins de requêtes :)
          • Partager sur Facebook
          • Partager sur Twitter
            1 août 2009 à 12:19:33

            Perso j'ai fait un tchat en ajax et toute les 100ms sa fait une requete en disans "envoie moi le text" apres je test si le texte reçu et le meme que la derniere fois ou si c'est un nouveau.
            Je peut te passer le code si tu le desire.
            • Partager sur Facebook
            • Partager sur Twitter
              1 août 2009 à 16:16:16

              * oui je veux bien voir comment tu as coder ceci s'il te plait

              * Pourrai-je savoir comment exécuter une longue requête (long polling), cette méthode peut être intéressante mais encore faut-il savoir ou l'apprendre ?
              • Partager sur Facebook
              • Partager sur Twitter
                1 août 2009 à 16:27:10

                Bonjour je vais donc te donner des extrait de mon code.
                Juste de quoi comprendre car une fonction en appelle une autre...
                <script type="text/javscript">
                /*
                Tu a besoin d'appeler cette fonction une fois, puis elle va s'auto-appeler tout
                les 'freq' millisecondes.
                Dans mon code freq = 100
                C'est tout a fait gérable et ne fait pas ramer.
                */
                function check_message()// tu appelle cette fonction au début une fois
                {
                
                request(readData,'recevoir');
                setTimeout("check_message()",freq);
                }
                function request(callback,ordre,message) {
                	var xhr = getXMLHttpRequest();
                	
                	xhr.onreadystatechange = function() {
                	
                		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                		
                			callback(xhr.responseXML);
                			
                		}
                	};
                	
                	xhr.open("GET", "JS-php.php?ordre="+ordre+"&Pseudo="+pseudo+"&Message="+message, true);
                	xhr.send(null);
                }
                
                </script>
                


                En gros sa envoie une requete, cette requete va être traiter (ici par JS-php.php)
                La page de traitement va voir que 'ordre' == 'recevoir' et va donc renvoyer les derniers message.
                Après dans ma fonction callback je verifie que je n'ai n'est pas déjà reçu ce message.
                Si ce n'est pas le cas j'affiche le message sinon je n'affiche rien
                Sans cette verification tu aurait le dernier message qui s'affiche toute les 100ms alors qu'une fois suffit.

                Voilà.
                Esperant t'avoir aidé.
                • Partager sur Facebook
                • Partager sur Twitter
                  1 août 2009 à 17:06:36

                  Merci de ton morceau de code, je tacherais d'en sortir un truc pour moi.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 août 2009 à 17:27:31

                    Si ton sujet est résolu, pense à l'indiquer à l'aide du lien en bas de page. ;)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Salon de tchat

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown