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

Id de Socket unico por cada ventana del explorador

Estas en el tema de Id de Socket unico por cada ventana del explorador en el foro de Node.js en Foros del Web. Buenas noches, estoy haciendo una especie de chat, pero tengo un problema, a la hora de abrir una ventana del explorador todo va bien, pero ...
  #1 (permalink)  
Antiguo 04/10/2013, 19:19
 
Fecha de Ingreso: diciembre-2011
Mensajes: 21
Antigüedad: 12 años, 11 meses
Puntos: 1
Id de Socket unico por cada ventana del explorador

Buenas noches,

estoy haciendo una especie de chat, pero tengo un problema, a la hora de abrir una ventana del explorador todo va bien, pero si con ese usuario abro otra ventana alli tengo el problema, porque todos los mensajes se entregan en esa nueva ventana y no en la que tenia anteriormente, existe alguna manera de entregar el mensaje a las dos ventana del explorador? se puede hacer con express?

Gracias por su ayuda.
  #2 (permalink)  
Antiguo 05/10/2013, 17:16
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 16 años, 3 meses
Puntos: 103
Respuesta: Id de Socket unico por cada ventana del explorador

Si se puede. Socket.io trata a todas las conexiones por igual, sin importar si es la misma maquina. El problema está en tu codigo, tal vez tendras una lista con todos los ID internos de socket.io para cada usuario, donde posiblemente estes sobreescribiendo el ID, por lo que solo se envía a la conexión mas reciente.

Un saludo, y para la proxima mostra el codigo ( o la parte sensible )
__________________
Hangouts de JavaScript todos los jueves 20hs GMT, Unite !
https://plus.google.com/u/0/108504944676960830886
  #3 (permalink)  
Antiguo 07/10/2013, 14:41
 
Fecha de Ingreso: diciembre-2011
Mensajes: 21
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: Id de Socket unico por cada ventana del explorador

Gracias compañero, el problema era como mencionas actualizaba el id del usuario al ultimo socket, ahora bien lo que hice es asignar un arreglo que me ingresa el usuario y el socket.id de la siguiente manera...

UsersConectados.push({"user" : user, "socketId" : socket.id});

de esta manera se si el usuario esta en mas de una ventana del explorador y le entrego los mensajes en dichas ventanas, digamos que ya lo tengo resuelto, ahora bien mi pregunta por inexpericia es la siguiente, si este array de usuarios conectados crece por ejemplo 50k afecta el performance del servidor? agradezco sus comentarios...

saludos
  #4 (permalink)  
Antiguo 09/10/2013, 12:16
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 16 años, 3 meses
Puntos: 103
Respuesta: Id de Socket unico por cada ventana del explorador

Si crece, si lo afecta. lo que podrias hacer es algo así:
Código Javascript:
Ver original
  1. var UsersConectados = Object.create(null); // Creamos un objeto vacío
  2.  
  3. // en vez de UsersConectados.push({"user" : user, "socketId" : socket.id});
  4. UsersConectados[socket.id] = {"user" : user, "socketId" : socket.id};
  5.  
  6.  
  7. // agregale algo así en la desconexión
  8. socket.on('disconnect',function(){
  9. delete UsersConectados[socket.id];
  10. }
  11.  
  12.  
  13. // y recorda que cambió la estructura de UsersConectados. pasó de ser Un Array  a un Objeto.
__________________
Hangouts de JavaScript todos los jueves 20hs GMT, Unite !
https://plus.google.com/u/0/108504944676960830886

Etiquetas: cada, explorador, socket, ventana
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:32.