Cita:
Iniciado por utan Hola,
En tu logica , cuando haces la connection debes cerciorarte de que cuando se conecta para por tu login y este se le de las propiedades en el objeto..
Esto debes también imprementarlo cuando el socket se desconecta por alguna razón, veo que tu problema pasa por el echo que el usuario se desconecto pero estando logeado en tu aplicación lo cual el ya no tiene el mismo socket si no que se le a dado otro, y pues como no a pasado por el login de nuevo este no es salvado en el objeto de usuarios que tienes..
y por ayi va el problema...
en el cliente , coloca un lisitener de deconecion y asi te daras cuenta que el problema es que se conecto y reconecto.. el cual aunque se aya reconectado no tiene el socket antiguo...
espero me entiendas , tu problema es de session..
Sisi entiendo perefcto lo que dices... mira esto tengo
Código HTML:
io.sockets.on('connection', function (socket) {
socket.on('verifico_permisos', function (data) {
connection.query("SELECT id,display_name from users where user_login = '"+data['usuario']+"' and user_pass='"+data['pass']+"'", function(err, rows, fields) {
socket.identificador=rows[0].id+'_'+new Date().getTime();
//Lo agrego al objeto
usuariosConectados[socket.identificador]={
'id':rows[0].id,
'nombre': rows[0].display_name,
'socket': socket.id,
'identificador':socket.identificador,
};
usuario=[socket.identificador,rows[0].display_name];
//envio a los usuarios conectados el nuevo usuario
socket.broadcast.emit("conectado",usuario);
//envio al nuevo usuario la lista de todos los usuarios
socket.emit("me_conecte",usuariosConectados);
})
});
Alli cuando el usuario ingresa pasa por esa revision... si se desconectara no deberia saltar esta otra funcion que tengo tambien:
Código HTML:
socket.on('disconnect', function ()
{
//Eliminamos al usuario de los conectados
delete usuariosConectados[socket.identificador];
//Mandamos la información a las Sockets
socket.broadcast.emit("usuarioDesconectado",socket.identificador);
});
¿Podrias darme un ejemplo de como colocar el listener que dices?
Mil gracias por tu ayuda!!!