¿Cómo puedo crear una aplicación de chat en la parte superior de mi página web (que se basa en php) al igual que el chat de Facebook o el chat de gmail?

No hay respuesta fácil para esta pregunta. Hay algunas formas de atacar el problema, cada una con sus propias desventajas.

  1. Cree un script PHP de fondo que reciba un mensaje a través de POST y lo guarde en una base de datos o archivo de texto. Cree un front-end con HTML / JavaScript / Ajax que sondee continuamente el back-end para obtener los mensajes más recientes. Este método será lento e intensivo en ancho de banda (tanto para el servidor como para el cliente). No recomiendo este método
  2. Similar al método 1, excepto que use sondeo largo en lugar de sondeo corto. Con el sondeo largo, el cliente se conecta al servidor, pero el servidor espera para enviar una respuesta hasta que detecta un nuevo mensaje. Esto se llama una aplicación Comet. Desafortunadamente, esto es difícil de configurar y disminuye rápidamente la cantidad de hilos disponibles para el servidor web, limitando severamente la cantidad de usuarios de chat simultáneos que puede atender.
  3. Pague un servicio como WebSync para enviar solicitudes a su sitio.
  4. Elimine el requisito de usar PHP e instale node.js en su servidor. Use el nodo para enviar mensajes de chat a sus clientes. Una alternativa al nodo en el lado .NET de las cosas sería ASP.NET SignalR.

Tienes dos opciones de arquitectura.

El primero es “Encuesta”. Solo tiene su servidor de encuesta de código js cada pocos segundos. Esto es fácil de implementar, pero asegúrese de que abrumaría el cómputo del lado del servidor. Este enfoque tiene la gran desventaja de que muchas solicitudes simplemente se desperdician. Sin embargo, algunos sitios web lo hacen de esta manera y funciona bien. En mi memoria, la sala de chat de stackoverflow está sondeando.

La segunda forma se llama “Cometa”. Esto es complejo, pero ya hay bastantes marcos para ello. PHP no puede ejecutarse como servidor cometa ya que cada solicitud ocupa un hilo o proceso. Pero, puede tener un proxy frente a su código PHP para enviar la solicitud de chat a un servidor de chat específico escrito en un código que no sea PHP.

Prueba Webchat fácil y rápido. Ya está construido y listo para funcionar (y se puede acceder por Internet o por un cliente IRC, ya que utiliza un servidor IRC).

Aquí hay un ejemplo: Gmail / Facebook Style jQuery Chat