Las salas de chat en línea es una plataforma en línea para la comunicación con varias personas. Con la invención y la madurez de más y más tecnologías nuevas, las salas de chat en línea también han utilizado varias tecnologías. Me gustaría resumir brevemente este artículo.
En primer lugar, hablemos de la tecnología front-end. El último es, por supuesto, WebSocket basado en HTML5, que implementa la comunicación dúplex entre el navegador y el servidor. El protocolo de comunicación WebSocket fue designado como el RFC 6455 estándar por el IETF en 2011, y la API de WebSocket fue designada como el estándar por W3C. En la API de WebSocket, el navegador y el servidor solo necesitan estrechar la mano, y luego se forma un canal rápido entre el navegador y el servidor. Los datos se pueden transmitir directamente entre los dos. Sin embargo, dado que WebSocket es una API HTML5, muchos navegadores aún no tienen soporte, por lo que este método no se usa particularmente ahora. El segundo tipo es AJAX. Adopta un método de votación. De vez en cuando, va al servidor para descargar datos y verificar si está actualizado. Su ventaja es el procesamiento de solicitudes asíncronas (la sincronización también se puede configurar) y no bloqueará otras operaciones del usuario. La desventaja es que la encuesta ininterrumpida no solo consume ancho de banda, sino que también ocupa demasiados recursos de terminal y servidor. Además, debido a que hay un intervalo de tiempo para la encuesta de Ajax, los mensajes obtenidos no son en tiempo real, porque no es un desencadenante de mensajes, y la eficiencia de Ajax es casi la más baja. El tercer tipo es la tecnología de empuje basada en servidor (COMET). Se llama Push, pero en realidad es Pseudo Push. El principio es establecer una larga conexión entre el terminal y el servidor. La recepción obtiene contenido determinando si el contenido de esta larga conexión ha cambiado. Su ventaja es que ocupa menos recursos y tiene un buen rendimiento en tiempo real. Requiere soporte especial del servidor y ocupa la conexión durante mucho tiempo. Ahora, cada vez más servicios adoptan esta tecnología.
Hablemos de los antecedentes. Las salas de chat son aplicaciones IO altas, y la base de datos puede ser el cuello de botella más grande. La característica del chat es que hay muchos textos cortos, similares a Weibo. Además, pertenece a un sistema de usuarios múltiples. Cuando el usuario alcanza un orden de magnitud, si se usa una base de datos relacional como MySQL, la presión de consulta debe ser muy alta. Si no hay requisitos especiales, personalmente creo que los registros de chat no necesitan almacenarse permanentemente. En este momento, los sistemas de almacenamiento basados en memoria como Memcache y Redis pueden desempeñar un papel. A continuación se muestra una sala de chat en línea simple basada en AJAX+PHP+MEMCACHE que desarrollé.
En esta sala de chat, todos los registros de chat se almacenan en Memcache. La identificación máxima de los registros de chat se almacena con CID y los registros de chat se almacenan con MSGCID. Para cada registro insertado, el CID se incrementará en 1. La recepción obtiene datos de formato JSON a través de AJAX. Dado que Memcache se basa en la memoria, el sistema general se ejecuta muy rápido. A continuación se muestra el código fuente del sistema. Solo hay dos archivos en todo el sistema, que son menos de 10 kb juntos.
Descargar wulin.com
https://github.com/hitoy/online-chatroom
Requisitos del sistema:
1. Memcache está instalado
2. Instale la extensión de Memcache en PHP
3. Navegadores modernos que admiten JavaScript y Ajax