Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/12/2013, 13:01
Avatar de utan
utan
 
Fecha de Ingreso: agosto-2012
Mensajes: 126
Antigüedad: 12 años, 3 meses
Puntos: 17
Respuesta: Evitar propagación de datos del ultimo usuario sobre todos los demás.

Hola,

Lo que pasa esque tu variable1 , es global en el scope y ademas solo haces una llamada para obtener la información de tu usuario recién logeado..

Cuando empiezas tu aplicación node , tu script hace una llamada a Msql, pidiendo la información de usuario una ves recive correctamente esta información esta se queda almacenada en tu variable global, y esta nunca va hacer cambiada a menos que reempiezes tu servidor, es por eso que cuando otros usuarios entran a tu aplicación estos heredan esta misma variable..

Código Javascript:
Ver original
  1. variable1 = "nombre de usuario extraído correctamente de bd en Mysql, aquí no hay ningún problema, ya lo comprobé"
  2.  
  3. io.sockets.on('connection', function (socket) {
  4. socket.emit('inicializar', {nombre_usuario: variable1}
  5. }

El cambio seria, poner la variable en la funcion de callback de io.sockets.on y cuando un nuevo socket, o usuario logee en tu aplications hacemos la llamada a mysql..

Código Javascript:
Ver original
  1. io.sockets.on('connection', function (socket) {
  2.     // procesamos el usuario en callback de mysql
  3.     mysql.query( query , function( err, rows ){
  4.         if( err ) return false;// si hay error en el query entonces detenemos el script
  5.         var variable1 = ( rows[0] && rows[0].username );
  6.         // una ves estamos seguros que tenemos la variable emitimos a los usuarios.
  7.         socket.emit( 'inicializar', { nombre_usuario: variable1 } );
  8.     }  
  9. });

De esta forma, obtenemos la variable cada vez un usuario entra a tu aplicación...
__________________
Mis conocimientos son limitado, pero si te puedo ayudar lo are gustoso mi chat particular, visitalo gracias http://rendezvouschat.com