Aenoa Posté 12 Mai 2013 Posté 12 Mai 2013 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!
Aenoa Posté 13 Mai 2013 Auteur Posté 13 Mai 2013 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 :/
SStephane Posté 13 Mai 2013 Posté 13 Mai 2013 Faut pas être refractaire au progrès comme ça 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 !
SStephane Posté 13 Mai 2013 Posté 13 Mai 2013 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 !
Dadou Posté 13 Mai 2013 Posté 13 Mai 2013 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
Aenoa Posté 20 Mai 2013 Auteur Posté 20 Mai 2013 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 ?
SStephane Posté 20 Mai 2013 Posté 20 Mai 2013 ça sera pas viable. Non 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 ). PS : bon anniv
Aenoa Posté 20 Mai 2013 Auteur Posté 20 Mai 2013 Bon, je vais passer du côté obscur du chat alors ! Merci encore !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant