Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/09/2012, 08:42
Hook
 
Fecha de Ingreso: febrero-2012
Ubicación: Mallorca
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 1
Refrescar muro y notificaciones "on the fly" con node.js

Buenas a todos! Les explico.

Estoy programando un muro igualito que el de Facebook o Tuenti y, ya que el volumen de usuarios potenciales del servicio va a ser realmente alto, quiero optimizarlo bien.

Como sabrán, cuando en Facebook un amigo envía una noticia, esta es enviada a todos sus amigos conectados y, automáticamente, aparece en sus muros sin necesidad de actualizar. Para hacer esto existen dos maneras. Una cutre y otra optimizada y realmente eficaz. Vamos a explicarlas:
  • Cutre: Esta consistiría en hacer peticiones AJAX contra nuestro servidor. En donde tendríamos una función que nos verificaría si hay avisos o mensajes nuevos que mostrar, si no hubiese no devolvería nada. Como ven, hacer una petición cada, por ejemplo, 2 segundos para ver si hay notificaciones es algo realmente cutre. Aparte de que si tuviese que programar un chat sería realmente lento.
  • Optimizada: La parte optimizada sería el de usar algún servidor que no sea Apache que soporte conexiones largas (Apache por defecto no lo soporta). Sobre este tema me he informado y he leído bastate sobre node.js, que creo que sería el servidor ideal, puesto que existen módulos capaces de comunicar node.js con MySQL. Mis dudas vienen aquí:

Como sabran, Facebook tiene 900 Millones de usuarios y, cuando uno de estos envía un mensaje al muro, no se envía a todos ellos el mensaje, solamente se envía a sus amigos. Con esto, entiendo que hay una lógica de programación entre su servidor de notificaciones y el cliente.

Mi pregunta es, como implementar esta lógica? con sesiones? Y como verifico las nuevas notificaciones? con un bucle en el servidor node.js que haga consultas en el MySQL? Había pensado en la posibilidad que, en cuanto un usuario envíe un texto, notifique de alguna manera a node.js este echo y ya el propio node.js se encargaría de enviarlo a los usuarios adecuados.

Alguno de ustedes que domine el tema puede explicarme los pasos a seguir? Ya que no consigo entender como notificar a node.js los eventos que se producen "al vuelo" y estos a un grupo selecto (a los amigos del usuario) de usuarios.

Otra pregunta para quien domine node.js. Saben si node.js resistiria una alta carga de conexiones? Supongamos, por ejemplo, que se conectan 10.000 usuarios a la vez. Node.js lo soportaría? Ya que he leido que node.js no es "multihilo" como Apache.

Un saludo y muchas gracias! :)