Foros del Web » Programando para Internet » Node.js »

Evitar propagación de datos del ultimo usuario sobre todos los demás.

Estas en el tema de Evitar propagación de datos del ultimo usuario sobre todos los demás. en el foro de Node.js en Foros del Web. Estimados amigos, una vez mas solicito su ayuda... Tengo la siguiente estructura hyper resumida: Código PHP: variable1  =  "nombre de usuario extraído correctamente de bd en Mysql, aquí no hay ningún problema, ya lo comprobé" io . sockets . on ( ...
  #1 (permalink)  
Antiguo 08/12/2013, 02:05
Avatar de Celcius  
Fecha de Ingreso: febrero-2003
Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 21 años, 2 meses
Puntos: 5
Busqueda Evitar propagación de datos del ultimo usuario sobre todos los demás.

Estimados amigos, una vez mas solicito su ayuda...
Tengo la siguiente estructura hyper resumida:

Código PHP:
variable1 "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_usuariovariable1

Como comprenderán tengo varios usuarios que se conectan y si por ejemplo tengo 5 que se conectan uno después de el otro, al final, si todos (YA CONECTADOS) actualizan el navegador, todos automáticamente heredan el nombre del último usuario lo cual obviamente no quiero, ya que todos deben tener su propio nombre. Intenté solucionarlo implementando sesiones, pero no me permite utilizarlas dentro de io.sockets.on('connection', function(socket)) a pesar que utilizé como segundo parámetro req

Espero que alguien haya podido solucionar este impase antes, les agradezco una vez mas por su invaluable ayuda.
__________________
"Si tú conocieras el don de Dios, y quién es el que te dice: 'Dame de beber,' tú Le habrías pedido a El, y El te hubiera dado agua viva.
Sn. Juan 4:19
Jesus
  #2 (permalink)  
Antiguo 09/12/2013, 21:05
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Evitar propagación de datos del ultimo usuario sobre todos los demás.

Ummm hola.. creo que tu codigo es de servidor(eso espero) pues bueno yo lo soluione de una forma algo sencilla: has en cliente un usuario osea algo como un identificador unico en alguna etiqueta y despues escuchas el socket con una funcion más ese identificador seria algo como esto:
Código HTML:
Ver original
  1. <span id="identity" data-id="$variable"></span><!--$variable seria un valor unico de este usuario como un id o un nick-->

Código Javascript:
Ver original
  1. document.addEventListener('DOMContentLoaded', function(){
  2.      var id=se('#identity').dataset.id;//ya se tiene el identofocador unico del usuario
  3.      socket.on('inicializar'+id, function(datos){//este es el secreto
  4.              alert('es solo para este usuario');
  5.      });
  6. }, false);
  7.  
  8. function se(tag){
  9.     return document.querySelector(tag);
  10. }

y en tu servidor node sreia esto
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. var id=//extracción de un identificador unico de bd
  3. io.sockets.on('connection', function (socket) {
  4. socket.emit('inicializar'+id, {nombre_usuario: variable1}
  5. }

con eso en tu codigo de node solo le agregas el id unico cargado de bd que tu dices y solo sera emitido a ese usuario en especifico

espero te haya servido esto.
  #3 (permalink)  
Antiguo 13/12/2013, 13:01
Avatar de utan  
Fecha de Ingreso: agosto-2012
Mensajes: 126
Antigüedad: 11 años, 8 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

Etiquetas: ultimo, usuario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:08.