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

[SOLUCIONADO] chat privado con nodejs

Estas en el tema de chat privado con nodejs en el foro de Node.js en Foros del Web. Hola como están? Recién empiezo a investigar nodejs y me surgió una duda que no llegó a entender. Quise programar un chat pero privado (uno ...
  #1 (permalink)  
Antiguo 26/03/2013, 19:32
 
Fecha de Ingreso: junio-2010
Mensajes: 153
Antigüedad: 14 años, 6 meses
Puntos: 4
chat privado con nodejs

Hola como están?
Recién empiezo a investigar nodejs y me surgió una duda que no llegó a entender.
Quise programar un chat pero privado (uno a uno) y me si cuenta que al momento de subir el proyecto a appfrog (por ejemplo) este te brinda una sola url para acceder a tu aplicación. Por lo tanto el chat se trasforma en un chat multiusuario ya que todos acceden por la misma url.

Entonces estoy haciendo algo mal o no estoy entendiendo bien la utilización de nodejs?

Muchas gracias.
  #2 (permalink)  
Antiguo 28/03/2013, 00:05
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 12 años, 6 meses
Puntos: 127
Respuesta: chat privado con nodejs

Tienes que usar sesiones, que no son más que identificadores que distinguen conversaciones de otras.

Por ejemplo, suponiendo que un usuario se conecta: El usuario proporcionó un id de sesión c2398hvi8m234234 (mediante un formulario o por la URL o lo que fuera)

Código Javascript:
Ver original
  1. socket.join("c2398hvi8m234234");
  2.  
  3. function propagateEvent(sessid,eventname,data)
  4. {
  5. io.sockets.in(sessid).emit(eventname, data);
  6. }

El uso de rooms permite aglutinar sockets y enviar mensajes y eventos exclusivamente a los sockets de ese room.

propagateEvent("c2398hvi8m234234","evento",datos) enviaría el evento a los usuarios del room c2398hvi8m234234.

1. Mediante join introduces el socket actual en una room.
2. Mediante in-emit envías un evento a todos los sockets de la room.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 28/03/2013 a las 00:16
  #3 (permalink)  
Antiguo 28/03/2013, 09:00
 
Fecha de Ingreso: junio-2010
Mensajes: 153
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: chat privado con nodejs

Bien! creo que entiendo. Tendrias un tutorial/codigo/ejemplo de como hacer un chat por rooms, manejando las sesiones como me decis?

Muchas gracias!
  #4 (permalink)  
Antiguo 28/03/2013, 10:03
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 12 años, 6 meses
Puntos: 127
Respuesta: chat privado con nodejs

http://psitsmike.com/2011/10/node-js...chat-tutorial/

Pero te costará entenderlo. La idea es que lo descubras por ti mismo aplicando esos puntos que expuse. No es nada difícil. La idea es que para que un socket entre en un room, te basta usar join y para enviar mensajes a ese room puedes usar io.sockets.in.

En la documentación es más claro.

Lógicamente, el socket saldría de ese room cuando se desconectase.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #5 (permalink)  
Antiguo 28/03/2013, 10:10
 
Fecha de Ingreso: junio-2010
Mensajes: 153
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: chat privado con nodejs

Barbaro! muchas gracias.
Tendrias skype para preguntarte alguna duda si la tengo?

Gracias.
  #6 (permalink)  
Antiguo 28/03/2013, 10:12
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 12 años, 6 meses
Puntos: 127
Respuesta: chat privado con nodejs

Te pasé mi fb por privado.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Etiquetas: chat, privado
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 02:30.