Les salles de discussion en ligne sont une plate-forme en ligne pour la communication avec plusieurs personnes. Avec l'invention et la maturité de plus en plus de nouvelles technologies, les salles de chat en ligne ont également utilisé diverses technologies. Je voudrais résumer brièvement cet article.
Tout d'abord, parlons de la technologie frontale. Le dernier est bien sûr WebSocket basé sur HTML5, qui met en œuvre une communication complète-duplex entre le navigateur et le serveur. Le protocole de communication WebSocket a été désigné comme le RFC 6455 standard par l'IETF en 2011, et l'API WebSocket a été désignée comme la norme par W3C. Dans l'API WebSocket, le navigateur et le serveur n'ont qu'à se serrer la main, puis un canal rapide est formé entre le navigateur et le serveur. Les données peuvent être transmises directement entre les deux. Cependant, comme WebSocket est une API HTML5, de nombreux navigateurs n'ont pas encore de support, donc cette méthode n'est pas particulièrement utilisée maintenant. Le deuxième type est ajax. Il adopte une méthode de sondage. De temps en temps, vous allez sur le serveur pour télécharger des données et vérifier s'il est mis à jour. Son avantage est le traitement de la demande asynchrone (la synchronisation peut également être configurée) et ne bloquera pas les autres opérations de l'utilisateur. L'inconvénient est que le sondage ininterrompu consomme non seulement la bande passante, mais occupe également trop de ressources de terminaux et de serveur. De plus, comme il y a un intervalle de temps pour le sondage de l'Ajax, les messages obtenus ne sont pas en temps réel, car ce n'est pas un déclencheur de message, et l'efficacité de l'Ajax est presque la plus faible. Le troisième type est la technologie push basée sur le serveur (COMET). Il s'appelle Push, mais c'est en fait Pseudo Push. Le principe consiste à établir une longue connexion entre le terminal et le serveur. La réception obtient du contenu en déterminant si le contenu de cette longue connexion a changé. Son avantage est qu'il occupe moins de ressources et a de bonnes performances en temps réel. Il nécessite une prise en charge spéciale du serveur et occupe la connexion pendant longtemps. Maintenant, de plus en plus de services adoptent cette technologie.
Parlons de l'arrière-plan. Les salles de chat sont des applications IO élevées et la base de données peut être le plus grand goulot d'étranglement. La caractéristique du chat est qu'il existe de nombreux textes courts, similaires à Weibo. De plus, il appartient à un système multi-utilisateurs. Lorsque l'utilisateur atteint un ordre de grandeur, si une base de données relationnelle telle que MySQL est utilisée, la pression de requête doit être très élevée. S'il n'y a pas d'exigences particulières, je crois personnellement que les dossiers de chat n'ont pas besoin d'être stockés en permanence. À l'heure actuelle, les systèmes de stockage basés sur la mémoire tels que Memcache et Redis peuvent jouer un rôle. Vous trouverez ci-dessous une simple salle de chat en ligne basée sur AJAX + PHP + Memcache que j'ai développée.
Dans cette salle de chat, tous les enregistrements de chat sont stockés dans Memcache. L'ID maximum des enregistrements de chat est stocké avec CID et les enregistrements de chat sont stockés avec MSGCID. Pour chaque enregistrement inséré, le CID sera augmenté de 1. La réception obtient des données de format JSON via AJAX. Étant donné que Memcache est basé sur la mémoire, le système global fonctionne très rapidement. Vous trouverez ci-dessous le code source du système. Il n'y a que deux fichiers dans l'ensemble du système, qui sont inférieurs à 10 Ko ensemble.
Wulin.com Télécharger
https://github.com/hitoy/online-chatroom
Exigences du système:
1. Memcache est installée
2. Installez l'extension Memcache sur PHP
3. Browsers modernes qui prennent en charge JavaScript et Ajax