Aller au contenu

Réaliser un chatbox simple


Aenoa

Sujets conseillés

Bonjour à tous,



dans le cadre d'un projet personnel, je désire réaliser une chatbox (et ne pas utiliser un quelconque CMS de chat) en couplant MySQL, AJAX/JQuery et PHP.



Mon objectif serait d'avoir une page d'index, contenant le chat principal. Celui-ci se verrait recevoir du contenu (si il y en a du nouveau) toute les secondes, via un controller écrit en PHP qui intéragis avec la DB, Ce controller est appelé via Jquery depuis la page d'index. Pour l'histoire du controller, je me suis basé sur cette publication d'Ernestine, en l'adaptant à ma sauce.



Je bloque actuellement sur le côté Jquery: Comment faire pour que le nouveau contenu soit ajouté en haut de la div (au lieu d'en bas comme le ferais un .append) SANS que l'intégralité du chat soit rechargé (si un utilisateur sélectionne du texte, ça serait dommage qu'il voie sa sélection disparaître d'elle même...)



N'ayant pas beaucoup de temps à consacrer à cela (Travail de fin d'étude, examens, ...) je n'ai pas beaucoup de patience et le web ne m'aide pas trop =/



Merci d'avance!


Lien vers le commentaire
Partager sur d’autres sites

Merci Torche! ça m'aidera!


SStephane: Je préfère éviter le NodeJS, l'idée d'une appli serveur + client JS ne me plait pas du tout :/


Lien vers le commentaire
Partager sur d’autres sites

Faut pas être refractaire au progrès comme ça :D



PLusieurs avantages :


  • tu n'envoies pas de requêtes inutiles sur le serveur - l'interval que tu es obligé de définir pour récupérer les messages - (et ton client est déjà en JS, d'un certain point de vue)

  • instantanéïté des messages

Dans la source que je t'ai passé, il y a un proxy swf qui gère les sockets lorsque le navigateur ne les gère pas (IE < 10), pas d'excuse de portabilité !



Un inconvénient : il faut gérer les déconnexions des clients et faire des tentatives de reconnexion lorsque ça déconne !


Lien vers le commentaire
Partager sur d’autres sites

Tu installes d'abord nodeJS, ensuite tu édites le fichier JS du serveur avec tes paramètres (généralement le port d'écoute, je l'ai fait à l'arrache, donc dans le code), les fichiers du client aussi, il doit y avoir l'IP d'un de mes servuers dessus.



Ensuite tu lances le serveur en SSH :



nodejs chat-server.js

Et c'est tout !


Lien vers le commentaire
Partager sur d’autres sites

Il faut donc du serveur dédié pour faire cela, en mutualisé tu oublies, je serais donc plutôt du même avis que Aenoa, de l'ajax et du php / mysql


Lien vers le commentaire
Partager sur d’autres sites

J'ai achevé ma chatbox en AJAX et PHP, mais maintenant que j'y penses, sur le long terme, avec beaucoup d'utilisateurs, ça sera pas viable.


le NodeJS sera-t-il viable à forte affluence ? Cela ne fera-t-il pas trop de requêtes, sachant que je désire stocker les messages de chat en DB pour un suivi ?


N'existe-t-il pas un moyen d'avoir un chat efficace à forte affluence et ne demandant pas trop de requêtes, sans forcément devoir utiliser un aspect client/serveur requierant un SSH ?


Lien vers le commentaire
Partager sur d’autres sites

ça sera pas viable.

Non smile.gif

NodeJS sera-t-il viable à forte affluence.

Oui, même très forte.

Pour tes logs, tout dépend comment tu veux les exploiter par la suite.

As tu réellement besoin de SQL ? (car tu peux aussi faire des logs simples ( genre echo "machin" >> chat.log ), 1 fichier de log par room, par exemple (sauf à espionner les chatteurs, pas trop d'intérêt, en général on conserve juste ce genre de truc au cas ou...)

En SQL avec nodejs, les seules requêtes que tu feras seront des requêtes d'insertion (pour l'historique, ce que tu peux eviter avec des fichiers de log).

Après, même en ajax, tu peux nettement limiter les requetes SQL, mais tu n'éviteras jamais les requêtes AJAX repétées (touts les secondes pour un truc à peu pres correct), donc à terme, c'est pas viable ( autant installer loic directement sur les clients wink.gif ).

PS : bon anniv

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...