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

[SOLUCIONADO] como usar el evento diconnect de socket.io bn

Estas en el tema de como usar el evento diconnect de socket.io bn en el foro de Node.js en Foros del Web. hola chicos que tal como estan todos. Pues bueno tengo una idea pero no se como hacerla. Explico lo siguiente: Tengo algo donde los usuarios ...
  #1 (permalink)  
Antiguo 18/10/2013, 21:09
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
como usar el evento diconnect de socket.io bn

hola chicos que tal como estan todos.

Pues bueno tengo una idea pero no se como hacerla. Explico lo siguiente:

Tengo algo donde los usuarios se conectan y se desconectan pero mi forma de saber si esta conectado o desconectado tiene falencias. Pero se me ocurrio que con node se puede hacer por que existe el evento disconnect que seria cuando un socket se desconecte pero como hago para saber ummm la informacion del sockect o mas bn decir que ese socket es de un usuario y que cuando este se desconecte le avise al los amigos que se ha desconectado?
  #2 (permalink)  
Antiguo 19/10/2013, 11:06
Avatar de utan  
Fecha de Ingreso: agosto-2012
Mensajes: 126
Antigüedad: 11 años, 8 meses
Puntos: 17
Respuesta: como usar el evento diconnect de socket.io bn

Como no se sabe como lo as echo.. lo are asiendo el metodo conocido en la internet, ahora si creas un objeto aparte seria algo diferente, pero siempre arias una propiedad en el client object donde tendrias que colocar la key en el objeto que crearas..

Código Javascript:
Ver original
  1. server.socket.on( 'connection' , function ( client ){
  2.     client.on( 'login' , function ( loginData ){
  3.         if( typeof loginData !== 'undefined' ){
  4.             client.nickname =   loginData.nickname;
  5.             client.room     =   loginData.channel;
  6.             // entra al cuarto, puedes esperar el callback si quieres y colocas el broadcast si fue un exito entrar al cuarto
  7.             client.join( client.room );
  8.             // emites a todos menos a ti
  9.             client.broadcast.json.in( client.room ).emit( 'message' , {
  10.                                                             nickname    :   client.nickname,
  11.                                                             message     :   'a entrado a la sala',
  12.                                                             channel     :   client.room
  13.                                                         });
  14.         }
  15.     });
  16.    
  17.     client.on( 'disconnect' , function (){
  18.         if( client.nickname ){
  19.             // emites a todos menos a ti
  20.             client.broadcast.json.in( client.room ).emit('message' , {
  21.                                                             nickname    :   client.nickname,
  22.                                                             message     :   'a salido de la sala',
  23.                                                             channel     :   client.room        
  24.                                                         });// emites a todos menos a ti mismo
  25.             //  dejas el cuarto
  26.             client.leave( client.room );
  27.         }
  28.     });
  29.   });

Haber que tal.. dime si va por ayi..
__________________
Mis conocimientos son limitado, pero si te puedo ayudar lo are gustoso mi chat particular, visitalo gracias http://rendezvouschat.com
  #3 (permalink)  
Antiguo 22/10/2013, 21:20
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: como usar el evento diconnect de socket.io bn

hola ok muchas gracias pero la verdad lo solucione de otra forma aunque tu codigo me causa curiosidad antes de las preguntas a cositas que no conozco mi solucion:
Código Javascript:
Ver original
  1. //ya estoy dentro del on.connect
  2.  
  3. socket.once('disconnect', function(){
  4.         var id=socket.id
  5.         var nick=allClients[socket.id];
  6.         delete allClients[socket.id];
  7.         conn.updateNormal('usuario', 'conectado', 0, 'nick', nick, function(a){
  8.             //console.log('se ha eliminado '+nick);
  9.             slt.selectEspecific(conexion, ['cod', 'nick'], 'usuario', 'nick', nick, 'cod', '', 0, 2, function(as){
  10.                 var row=as[0];
  11.                 socket.broadcast.to('5487'+row.cod).emit('notific1', {type: 46, user: '5487'+row.cod, nick: row.nick});//les da la señal a todos los demas que se ha retirado o mas bn perdio conexion
  12.             });
  13.         });
  14.     });
  15.  
  16.     socket.once('enterRoom', function(us){
  17.         allClients[socket.id]=us.nick;
  18.         conn.updateNormal('usuario', 'conectado', 1, 'nick', us.nick, function(a){
  19.             //console.log(allClients);
  20.             hp.enterRoom(us, function(resp){
  21.                 socket.broadcast.to(us.user).emit('notific1', {type: 47, user: us.user, nick: us.nick});//les muestra a los demas que ha entrado
  22.                 socket.join(resp);
  23.             });
  24.         });
  25.     });

ok pues bueno ahora tengo una pregunta: para que sirve broadcast.json.in sobre todo solo la parte de json.in? en la linea 9 de tu codigo?
  #4 (permalink)  
Antiguo 23/10/2013, 01:43
Avatar de utan  
Fecha de Ingreso: agosto-2012
Mensajes: 126
Antigüedad: 11 años, 8 meses
Puntos: 17
Respuesta: como usar el evento diconnect de socket.io bn

El broadcast manda tu evento a todos los usuarios menos al que manda el evento en este caso tu..
Y json porque estas mandando un objecto lo cual socket.io no tiene que probar que clase estas mandando , un objecto o un string, dándote mayor performance.. el metodo "in" el cuarto al que este usuario pertenece..

en tu código
Código:
var nick=allClients[socket.id];
delete allClients[socket.id];
si no pruebas que el usuario existe, te dara un error parando tu instancia de node..

Deberías comprobar que existe y después usas delete..
__________________
Mis conocimientos son limitado, pero si te puedo ayudar lo are gustoso mi chat particular, visitalo gracias http://rendezvouschat.com

Última edición por utan; 23/10/2013 a las 01:48
  #5 (permalink)  
Antiguo 23/10/2013, 09:10
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: como usar el evento diconnect de socket.io bn

ummm entonces es mejor poner el json en las lineas 21 y 11 de mi codigo. Pero en si que es perfonmance? (no se bn lo que es)
  #6 (permalink)  
Antiguo 23/10/2013, 10:15
Avatar de utan  
Fecha de Ingreso: agosto-2012
Mensajes: 126
Antigüedad: 11 años, 8 meses
Puntos: 17
Respuesta: como usar el evento diconnect de socket.io bn

La optimizacion del código, si lo mandas sin el flag de json entonce el metodo broadcast tendría que comprobar que clase de información mandas , string, objeto etc, por lo tanto tomando mas tiempo en despachar tu evento o mensaje o objeto, esto no se ve con pocos conexiones pero que tal un dia tienes miles y miles.. ayi entonces si sentirá la optimizacion.
__________________
Mis conocimientos son limitado, pero si te puedo ayudar lo are gustoso mi chat particular, visitalo gracias http://rendezvouschat.com
  #7 (permalink)  
Antiguo 23/10/2013, 10:17
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: como usar el evento diconnect de socket.io bn

ammm ya ok olle muchas gracias :D entonces lo hare en todos mis emit por que la verdad asi estan la mayoria y creo ue tambien lo tendria que hacer en el cliente? olle si tu ves en tu codigo despues del json pones in cual es la diferencia del in a to ? json.in json.to
  #8 (permalink)  
Antiguo 23/10/2013, 10:31
Avatar de utan  
Fecha de Ingreso: agosto-2012
Mensajes: 126
Antigüedad: 11 años, 8 meses
Puntos: 17
Respuesta: como usar el evento diconnect de socket.io bn

No el cliente no tiene ese metodo, solo el servidor..
__________________
Mis conocimientos son limitado, pero si te puedo ayudar lo are gustoso mi chat particular, visitalo gracias http://rendezvouschat.com

Etiquetas: evento, socket-io, usar
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 17:56.