Ver Mensaje Individual
  #8 (permalink)  
Antiguo 13/04/2014, 12:29
Qazser
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años
Puntos: 10
Respuesta: CHAT, ¿como empezar?

Nosotros habiamos usado el long polling y nos causó muchísimos problemas.
..La teoria es la siguiente

Ajax envia una petición al servidor php...Ajax envia la siguiente petición desde que reciba respuesta del servidor.

El sevidor crea un bucle de..digamos 30-40-60 segundos, en el que cada par de segundos hace una consulta a la base de datos. Ese bucle en el php es lo que diferencia el short del long polling..El short es enviar consulta, php te dice si o no, ajax hace la siguiente.

El gran problema es que, a diferencia de las consultas cortas que debe responder el php con el short polling...Con el long polling el servidor Bloquea...Lo bloquea todo.

En una página web es normal tener varias pestañas abiertas a la vez..por ejemplo yo tengo 2 pestañas abiertas sobre fdw ahora mismo, estoy esperando una respuesta de un mp y lo actualizo cada par de segundos...si una de las pestañas tendria el chat NO podria hacerlo, porque PHP NO hace varios procesos para el mismo usuario...Y no encontramos configuración para quitarlo por completo. La carga del php aumenta considerablemente por el bucle, y nos reventó el servidor. A los 5 usuarios simultaneos podiamos ir reiniciando el servidor...y teniamos un vps potente, no estabamos en shared hosting.. (si, al principio estabamos en hosting compartido, pensabamos que no era para tanto, pero al minuto petó).

Puede que exista alguna configuración con la que php no bloquea...Pero bloquea de varios modos simultaneamente. Una razón es porque con un proceso bloquea la sessión del usuario, pero habia una función para liberar la sesión y aun así, iba fatal.

Al final pasamos de todo, borramos todo el código, pasamos a nodeJS e hicimos el chat de nuevo, ahora va perfecto en tiempo real, pero esto es otra historia que no viene a cuento jaja.

Y....En otra página web tengo un chat con short polling y nunca he recibido queja de un usuario, por eso, si tengo que elgir, personalmente me inclino al short, porque bloquea menos.

--------------------------------------------------------------------------

Ahora con respecto al planteamiento:

Todo bien pero te faltó un punto a mi parecer.
-Notificar al usuario si recibe un mensaje por una pestaña privada

Y cuando envie mensajes, que NO lo haga a la sala global, sino la actual, por si está en la pestaña privada
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos