2011-04-11 30 views
5

He estado leyendo tanto un nodo js últimamente, y las capacidades de chat parecen muy buenas. Sin embargo, los únicos ejemplos de chat que he visto básicamente transmiten un servidor de chat a una URL fija (como una sala de reuniones). ¿Es posible usar el nodo js en parte para crear un cliente de chat más parecido a gchat? - donde aparece una ventana de chat en la página actual y luego persiste en varias páginas. ¿Alguien ha visto un ejemplo de esto todavía?Nodo js - Creando salas de chat privadas persistentes

Si no, sugerencias para otras tecnologías para usar con este fin (sé que ha sido respondida en otras preguntas)?

Gracias.

+0

No debería ser demasiado difícil de escribir. ¿Que es exactamente lo que está buscando? – Raynos

+0

Estoy interesado en escribir un cliente para integrarlo en mi sitio web. Los usuarios podrán ver a sus "amigos" y tendrá una sensación similar a gchat, persistiendo en todas las páginas si así lo desean. Supongo que me pregunto si es posible transmitir varias sesiones privadas de chat a usuarios específicos (diferentes de una sala de chat), y persistir para el usuario hasta que lo cierren. Sé que hay otros idiomas para escribir esto, pero el nodo me pareció genial para usarlo si es posible. Gracias por el comentario. – smpappas

+0

¿Por "gchat" quieres decir google chat u otra cosa? – yojimbo87

Respuesta

6

Te daré una pseudo implementación confiando en jquery y now para abstraer el tedioso IO y tedioso DOM de la solución.

// Server 

var nowjs = require('now'); 
var everyone = nowjs.initialize(httpServer); 

everyone.now.joinRoom = function(room) { 
    nowjs.getGroup(room).addUser(this.user.clientId); 
} 

everyone.now.leaveRoom = function(room) { 
    nowjs.getGroup(room).removeUser(this.user.clientId); 
} 

everyone.now.messageRoom = function(room, message) { 
    nowjs.getGroup(room).now.message(message); 
} 

// Client 

var currRoom = ""; 

$(".join").click(function() { 
    currRoom = ... 
    now.joinRoom(currRoom); 
}); 

$(".send").click(function() { 
    var input = ... 
    now.messageRoom(currRoom, input.text()); 
}); 

now.messageRoom = function(message) { 
    $("messages").append($("<div></div>").text(message)); 
}; 

sólo sólo yo notado que la nueva versión de nowjs (0,5) tiene el sistema de grupos de construcción. Esto básicamente hace lo que quieres para ti. Sin molestia.

Si lo desea, puede eliminar la dependencia de nowjs y reemplazarla con 100/200 líneas de código. Lo dejo como un ejercicio para el usuario.

+0

Gracias Raynos. Acabo de investigar nowjs y podría ser justo lo que estoy buscando. Voy a probarlo, creo que debería poder generar grupos a pedido para chats privados o reuniones grupales, y simplemente eliminar a los usuarios y al grupo cuando haya terminado. – smpappas

+0

@smpappas prácticamente. El uso de 'ahora' es excelente en términos de abstracción de IO en tiempo real. Tienes que tener cuidado, no te excedas, sacrificas la eficiencia. – Raynos

1

Tome un vistazo a AjaxIM: https://github.com/freq32/AjaxIM

Esta es una aplicación de chat de estilo facebook (piensa lista de amigos, pequeña barra de chat persistente en la parte inferior de la pantalla, los chats popup) basado en nodejs.