Vous avez posé une question très large, mais:
magasin chaque message comme une ligne dans votre base de données, utilisez AJAX pour recharger le contenu de la fenêtre de discussion avec les derniers messages par exemple
SELECT * FROM `chat_messages` WHERE `room_id` = 'ID' ORDER BY `id` DESC LIMIT 100
Sélectionne les 100 messages les plus récents pour le salon de discussion. Boucle sur les résultats et affiche tous les messages que vous voulez.
Si votre base de données utilisateur dispose des autorisations pour créer des tables, vous pouvez aussi créer dynamiquement une table pour chaque salle de chat (ce qui serait beaucoup plus rapide performances sage)
Vous auriez alors avez simplement un input
ou textarea
dans un formulaire qui, une fois soumis, insère une nouvelle ligne dans la base de données (qui s'affichera pour tout le monde la prochaine fois que la fenêtre de discussion sera rechargée). Un autre moyen, plus optimisé, consiste à renvoyer uniquement les nouveaux messages aux utilisateurs à chaque requête, en stockant l'horodatage de chaque message dans la base de données, et en stockant l'horodatage de la dernière requête localement en JavaScript, puis utilisez un requête comme:
SELECT * FROM `chat_messages` WHERE `room_id` = 'ID' AND `timestamp` > 'LAST_REQUEST' ORDER BY `id` DESC LIMIT 100
Puis en ajoutant le résultat à la fenêtre de discussion, plutôt que de le remplacer.
Mais cela ne va-t-il pas paralyser mon serveur? 1000 utilisateurs faisant 100 * sélectionne chaque seconde? – user1516606
En supposant que vous vous rafraîchissez une fois par seconde, est-ce que ce ne sont pas 1000 utilisateurs qui font 1 select par seconde? – wyqydsyq
Désolé typo, mais toujours avec le nombre d'utilisateurs que je prévois de maintenir je ne pense pas que mon serveur pourrait le gérer. – user1516606