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 originalvariable1 = "nombre de usuario extraído correctamente de bd en Mysql, aquí no hay ningún problema, ya lo comprobé"
io.sockets.on('connection', function (socket) {
socket.emit('inicializar', {nombre_usuario: variable1}
}
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 originalio.sockets.on('connection', function (socket) {
// procesamos el usuario en callback de mysql
mysql.query( query , function( err, rows ){
if( err ) return false;// si hay error en el query entonces detenemos el script
var variable1 = ( rows[0] && rows[0].username );
// una ves estamos seguros que tenemos la variable emitimos a los usuarios.
socket.emit( 'inicializar', { nombre_usuario: variable1 } );
}
});
De esta forma, obtenemos la variable cada vez un usuario entra a tu aplicación...