Salut à tous,

Est-qu'il est possible de détecter quand son partenaire de tchat tape un message et l'indiquer sans utiliser mysql. Car detecter l'input c'est simple mais celui du partenaire, comment procéder ?
Merci

6 réponses


Vallyan
Réponse acceptée

Je serais curieux de voir ce que ca donne en termes de perf.
Disons que je tape un message. Je suppose qu'a chaque keypress, j'envoie un ajax au serveur pour lui dire que je tape .... ce qui est stocké en bdd .... Et donc les autres utilisateurs envoient aussi des requetent pour savoir qui tape en ce moment , qui est connecté, et s'il y a un nouveau message... je suppose qu'il y a genre 1s entre les ajax pour que ce soit le plus real time possible ... il doit ausi y avoir des verif coté serveur pour verifier que le dernier keypress de user A a ete effectue il y a moins de X secondes ...

Je suis pessimiste s'il y a pas mal d'utilisateurs, en plus des autres requetes http classiques que devra gerer ton site.

Enfin si tu veux faire la gestion des utilisateurs (connectés ou pas, qui tape ou pas ...) ca devient compliqué avec des fichiers texte simple, du coup, et tungagnerais pas en performences.

Si tu testes ce truc, je veux bien que tu commentes et que tu donnes tes impressions, ici ...

1/ Les sockets. Le port reliant le serveur aux clients reste ouvert, et on peut alors faire du "push": lorsqu'un client envoie un message sur le serveur, celui-ci le renvoie aux autres clients. Magique, mais pas simple a implémenter.

2/ Plus simple: stocker les messages envoyés dans un simple fichier texte au lieu d'une bdd, ce fichier étant régulièrement consulté par tous les clients qui veulent recevoir les updates. Dans le sfaits, pour les chats actifs, le fichier texte est moins violent pour le serveur que la bdd, donc en soit c'est pas une mauvaise idée.

Donc un tchat avec un système de fichier sera plus rapide ? C'est quoi la meilleure solution si on beaucoup d'utilisateur utilise mon tchat ? Sinon je peux utiliser une bdd pour tout et utiliser le système de fichiers et récupérer quand l'utilisateur est en train de taper un message ?

La meilleure solution c'est les sockets.

Un fichier pourrait etre plus rapide pour un tchat, mais surement pas pour le reste d'un site, ne me fais pas dire ce que j'ai pas dit :) !

Par "en train de taper" tu veux dire que c'est vraiment du temps réel, et tu veux voir que le mec est en train de rédiger le message un peu comme le crayon de skype qui s'agite si le type en face rédige? Si c'est le cas tu peux oublier l'ajax: ca demanderait biennnnnnn trop de requetes successives pour envoyer l'info et pour la récupérer.

Oui dsl je suis pas trop clair sur la dernière phrase.
Oui la meilleur solution ce sont les sockets seulement faut maîtriser l'affaire et disposer d'un serveur dédié car sur du mutualisé c'est pas possible d'installer ce que l'on veut.
Donc il faut oublier ce petit plus de voir 'nicolas is typing' dans son tchat ? Pourtant regardse par ici jquerychat.net ( alors je ne dis pas que tu as tord ou quoi que ce soit lol :) ). J'essai de comprendre les choses. Apparement eux ils font ca avec seulement une bdd. Je n'ai pas testé leur code tu me diras.

Est-ce que par exemple je pourrais stocker les messages,les id,timestamp dans une bdd et quand l'utilisateur commence a saisir un message le signaler dans un fichier qui serait plus réactif ( peut être ) pour implémenter cette option, ce petit plus dont on a pris l'habitude sur les tchats ?

Bon...bdd, fichier, ou les deux...Franchement je préférais les Sockets. Si mon site connait de l'affluence j'y viendrai, pour le moment je vais me contenter de ce que je peux faire avec mes acquis.

Non 14 dollars pour un tchat qui n'utilise pas PDO en plus ! Et puis comme tu le dis j'ai peur cela pose de véritables problèmes de perf. Je vais utiliser une bdd et oublier le service 'nicolas is typing'. Si mon futur site connais du succès ( c'est tout le mal que je me souhaite ) alors je passerai au sockect.
Merci en tout cas pour tes réponses.