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

[SOLUCIONADO] Emitir a todas las room de un mismo usuario

Estas en el tema de Emitir a todas las room de un mismo usuario en el foro de Node.js en Foros del Web. Buenas comunidad, una duda rapida. Es fácil emitir a todos los usuarios de una room, pero lo que quiero hacer es lo contrario. ¿Como puedo ...
  #1 (permalink)  
Antiguo 24/09/2013, 06:15
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 17
Pregunta Emitir a todas las room de un mismo usuario

Buenas comunidad, una duda rapida.

Es fácil emitir a todos los usuarios de una room, pero lo que quiero hacer es lo contrario. ¿Como puedo emitir a todas las room en donde este conectado en un usuario? ¿Tengo que recorrer obligatoriamente todas las habitaciones buscando a mi usuario, no hay ningun metodo directo mediante el socket o algo similar?

A ver si voy encontrado algo y si me pueden echar un cable.

Un saludo comunidad!.

P.D.: Estoy usando express.io como framework

Última edición por kikeking1; 24/09/2013 a las 06:21
  #2 (permalink)  
Antiguo 24/09/2013, 13:46
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 10 meses
Puntos: 29
Respuesta: Emitir a todas las room de un mismo usuario

Yo lo que hago es cuando agrego el socket al room le asigno una propiedad llamada room que contiene un array con todas las rooms. Es mas facil.

Pero si existe una forma de hacerlo :

io.sockets.manager.roomClients[socket.id];

Devuelve todas las rooms en un array a los que esta conectado el usuario. Todos tienen el caracter / al principio del nombre.

Saludos
  #3 (permalink)  
Antiguo 25/09/2013, 05:05
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 17
Respuesta: Emitir a todas las room de un mismo usuario

Perfecto, muchas gracias era justo lo que necesitaba.

Lo que comentas de hacer el array cada vez que conecto el socket al room, era lo que tenia pensado si no encontraba el metodo que me has facilitado, pero si existe algo nativo me gusta más usarlo.

Dejo como se quedo la esencia de la función por si a alguien le resulta util. El ejemplo esta aplicado para informar de la desconexión.

Código Javascript:
Ver original
  1. app.io.route('disconnect', function(req){
  2.  
  3.             var rooms = app.io.sockets.manager.roomClients[req.io.socket.id];
  4.             for (var room in rooms) {
  5.                 if (room.length > 0) { // evita la habitacion global
  6.                     room = room.substr(1); // quitamos el prefijo /
  7.                     app.io.room(room).broadcast('msgPrivados', {'text':req.session["name"]+' se desconecto'}); // voy emitiendo el mensaje por cada room
  8.                 }
  9.             }
  10.  
  11.     });

Última edición por kikeking1; 25/09/2013 a las 05:08 Razón: errata en el codigo

Etiquetas: Ninguno
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 08:16.