Comment créer une discution instantanée en php / jQuery

101590
,

Bonjour à tous. Voici une vidéo d'une petite heure relative à la création d'une discution instantanée en php / jQuery.

Attention ! Des erreurs et oublis sont bien évidemment présents dans ce code, par exemple, lors du tournage de cette vidéo, je n'avais pas encore pris en compte le .fail des $.getJSON ou encore la vérification de l'existence d'une boite discution lorsque l'on fait appel au fichier discution.php en question, appel qui tournera en boucle si l'on ferme la conversation puisqu'il trouvera 0 messages alors que le fichier .php en trouvera et retournera donc des résultats..
On peut également ajouter des set_time_limit(0); aux fichiers effectuant une boucle while.

Enfin, pour gagner en performance, préférez une création de dossier "non_lus" dans lequel on ajoute un dossier "id_destinataire" qui contient un fichier "id_expediteur.txt" quand un nouveau message est envoyé. On supprime ce fichier lors de l'update quand le message est lu.
Grace à cela, il suffit d'aller lire le dossier destinataire qui porte notre id, et de recupérer les fichiers .txt nommés par l'id de l'expediteur. Cela permets de savoir si des messages non lus sont présents tout en évitant de nombreuses requetes sql qui saturent la base.

Enfin, pour le poste de l'activité, privilégier un calcul javascript prenant en compte un delai minimum en lieu et place d'un update automatique a chaque click.
Par exemple : renseigner le timestamp à la création de la messagerie dans un data-timestamp, aller le recupérer a chaque click, soustraire le timestamp du click au data-timestamp, et si un certains délai est passé (par exemple 5 min), envoyer l'update de l'activité.

Vous l'aurez compris, le but de cette vidéo est essentiellement de vous aider dans votre réflexion concernant le sujet de la messagerie instantanée, et non pas de vous montrer LE code a appliquer. Ce code, même étant déjà assez travaillé, est appelé à évoluer.

N'hésitez pas à me faire part de vos retours, et à me demander, si ça vaut le coup, de refaire une vidéo avec la configuration citée plus haut.
Apres, je vous avoue me questionner concernant la capacité d'un serveur virtuel à résister à ces boucles while.
En local, ça tourne très bien dans une discution simulée entree 2 personnes (j'ouvre 2 sessions et tiens une discution), par contre, à combien de personnes connectées en même temps le serveur virtuel resisterais?..

J'attends vos retours ;)

2 Réponse

73552
,

Hello,

Effectivement comme Grégory K, je pense que le mieux serait de refaire ta vidéo. Si tu as des développeurs un peu confirmé, ils auront pas forcément besoin de conseils pour l'améliorer effectuer des changements dans le code.

En revanche pour ce genre de tuto, ce sont souvent des novices qui goûtent à ce genre de contenu. Alors leurs enlever les fautes c'est mieux, et leur montrer comment tu as amélioré ton contenu est encore mieux ! :D

101590
,

D'accord ^^. Je pense effectivement refaire une vidéo, et deposer le contenu en open source. Tant qu'a faire...