Autor Tema: DUDA - Chat  (Leído 1155 veces)

Desconectado AlejoSketch

  • PHPero Avanzado
  • ****
  • Mensajes: 340
  • Karma: 12
  • Sexo: Masculino
  • Aprendiendo algo nuevo cada día!
    • Ver Perfil
DUDA - Chat
« en: 22 de Junio de 2012, 19:27:30 pm »
Hola! como estás?

Bueno verán, seguro que mucho/as de ustedes conocerán los chats que funcionan a partir de HTML/CSS (desde luego) con PHP y MySQL, y que implementando AJAX con jQuery y demás logran la "impresión" de ser en "tiempo real" pero que en realidad están haciendo una consulta a la db cada x tiempo para comprobar nuevos mensajes y actualizar el chat (polling)

Pues bien, si no estoy diciendo que esto este mal... debería preocuparme por que tan óptimo sea el sitio web con este sistema? ya que esta acción tendría que multiplicarla por x número de visitantes en un momento hipotético lo que representa una carga casi que exponencial.

Investigando me encontré con otras posibilidades conocidas como COMET o PSEUDOCOMET  que a veces requiere ciertas características en el servidor, compatibilidad con navegadores, etc... y que por esto deje de lado.

Pero por ese mismo camino existe el  long polling, que es algo como una conexión al servidor y la mantiene abierta, y en muchos casos no requiere bases de datos sino que usa fopen() para escribir en "logs", este podría ser eliminado o más bien limpiado diariamente, ya que el log en si no me interesa conservarlo por más de 1 día.

Díganme ustedes que opinan? cual camino es más viable? tomando en cuenta factores de seguridad y rendimiento... debo mencionar que este consejo va enfocado a un chat de uso REGULAR, digamos... 40 o 50 usuarios simultáneos en un caso "máximo" cuyo hosting no tiene restricción en espacio de disco o ancho de banda (transferencia mensual).

Ah! y gracias desde ya, sus opiniones o información serán muy valiosas para mi.



Comunidad PHPeros

DUDA - Chat
« en: 22 de Junio de 2012, 19:27:30 pm »

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.738
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:DUDA - Chat
« Respuesta #1 en: 22 de Junio de 2012, 19:45:05 pm »
¿Y si nos ahorramos el uso de esto y empezamos a trabajar en aplicaciones basadas por conexiones que se mantengan abiertas?, Por esto me refiero a que en estos casos la manera mas optima seria usar conexiones cliente - servidor - cliente ya sea mediante el tradicional uso de Sockets.

Saludos.
Twitter: @JoakoM010



Desconectado AlejoSketch

  • PHPero Avanzado
  • ****
  • Mensajes: 340
  • Karma: 12
  • Sexo: Masculino
  • Aprendiendo algo nuevo cada día!
    • Ver Perfil
Re:DUDA - Chat
« Respuesta #2 en: 22 de Junio de 2012, 20:00:41 pm »
¿Y si nos ahorramos el uso de esto y empezamos a trabajar en aplicaciones basadas por conexiones que se mantengan abiertas?, Por esto me refiero a que en estos casos la manera mas optima seria usar conexiones cliente - servidor - cliente ya sea mediante el tradicional uso de Sockets.

Saludos.

Bueno, entiendo... pero como funcionaría esto? por donde empiezo a buscar? es algo confuso el tema del uso de Sockets en un chat o es que soy totalmente ignorante en el tema.  :-[


Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.738
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:DUDA - Chat
« Respuesta #3 en: 22 de Junio de 2012, 20:35:42 pm »
Bueno, entiendo... pero como funcionaría esto? por donde empiezo a buscar? es algo confuso el tema del uso de Sockets en un chat o es que soy totalmente ignorante en el tema.  :-[

Hay muchos tutoriales sobre el manejo de sockets en internet.
El único problema que pudieras tener es con webSocket de HTML5 ya que presenta algunas dificultades con el soporte en algunos navegadores (Pero lo que es Google Chrome, Safari, Opera y Mozilla Firefox ya poseen soporte).

Saludos.
Twitter: @JoakoM010



Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:DUDA - Chat
« Respuesta #4 en: 22 de Junio de 2012, 21:06:31 pm »
Hola!

Yo hace unos meses tuve que desarrollar una cosa MUY parecida (solo que para muchos más usuarios) para un cliente (prefiero no nombrarlo).

La opción que escogí fue usar COMET, como tú indicas.
Concretamente usé un servidor que se llama ape (http://www.ape-project.org/), y no me ha ido mal. De hecho tienen una demo de chat en la web oficial (http://www.ape-project.org/demos/1/ape-real-time-chat.html) Usa Javascript con Mootools en el lado del servidor, así que no hay que aprender mucho lenguaje nuevo, y utiliza un sistema de eventos para realizar las tareas.

Como solución no está mal, de hecho ahora mismo es funcional, pero si lo hubiera sabido hubiera escogido Node.JS (http://nodejs.org/) para realizarlo. Muy parecido, también JS en el servidor y demás. También tenían una demo de chat en el site oficial, pero deben de haberla quitado. Lo bueno es que es más actual y lo actualizan mucho más que APE, además de que se puede utilizar para un millar de cosas más.

Un saludo
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado AlejoSketch

  • PHPero Avanzado
  • ****
  • Mensajes: 340
  • Karma: 12
  • Sexo: Masculino
  • Aprendiendo algo nuevo cada día!
    • Ver Perfil
Re:DUDA - Chat
« Respuesta #5 en: 23 de Junio de 2012, 02:43:05 am »
Hola!

Yo hace unos meses tuve que desarrollar una cosa MUY parecida (solo que para muchos más usuarios) para un cliente (prefiero no nombrarlo).

La opción que escogí fue usar COMET, como tú indicas.
Concretamente usé un servidor que se llama ape (http://www.ape-project.org/), y no me ha ido mal. De hecho tienen una demo de chat en la web oficial (http://www.ape-project.org/demos/1/ape-real-time-chat.html) Usa Javascript con Mootools en el lado del servidor, así que no hay que aprender mucho lenguaje nuevo, y utiliza un sistema de eventos para realizar las tareas.

Como solución no está mal, de hecho ahora mismo es funcional, pero si lo hubiera sabido hubiera escogido Node.JS (http://nodejs.org/) para realizarlo. Muy parecido, también JS en el servidor y demás. También tenían una demo de chat en el site oficial, pero deben de haberla quitado. Lo bueno es que es más actual y lo actualizan mucho más que APE, además de que se puede utilizar para un millar de cosas más.

Un saludo

Gracias a ambos por sus opiniones, las he tenido muy en cuenta e investigando encuentro muy interesante todos estos puntos de vista o posibles soluciones...

Y lo de COMET, pues no termino de entenderlo bien... esto funciona en un hosting común?

Quería comentar algo más haber que opinan, se trata chats basados en la creación, modificación y consulta de archivo .txt/.html con fopen() y demás. que opinan ustedes de este mecanismo con respecto a uno con ajax y demás?
« Última modificación: 23 de Junio de 2012, 02:46:15 am por AlejoSketch »