Que tecnología usar para un chat web con notificaciones push?

Llevo días buscando sin ningún resultado, quiero hacer, o usar si ya esta hecho, un chat basado en notificaciones push, nada de llamadas constantes por ajax al servidor, conocéis alguno o con que tecnología podría meterle mano.

Estaba mirando el protocolo XMPP, que se que aquí hay mucho jabberiano suelto, que creo que funciona más o menos así, dejando los mensajes en el sevidor y es este el que se lo envía al cliente, pero no he encontrado como puedo meterle mano, lo mismo hay algo ya hecho y estoy perdiendo el tiempo.

Un Saludo y gracias por vuestro tiempo XD XD
También puedes usar longpolling, que así en resumidas cuentas, consiste en usar ajax pero que el servidor no responda (lo dejas en un bucle con un sleep) hasta que no haya un mensaje nuevo.
Pero entonces hasta que no salte un timeout, no me daré cuenta de la falta de mensajes no?

Estoy mirando XMPP y creo que voy a hacerme un cliente y un servidor basado en este protocolo
rcaba escribió:Pero entonces hasta que no salte un timeout, no me daré cuenta de la falta de mensajes no?

Estoy mirando XMPP y creo que voy a hacerme un cliente y un servidor basado en este protocolo


Yo soy uno de esos jabberianos ^^, Lo uso a diario ya sea desde clientes webs con cuenta (jappix), offline (gajim, psi, pidgin, etc) y alguna vez por vagueza o seguridad desde anonimos (muckl, por si cyber o sitios pocos seguros).

La parte servidor podrías ahorrartela, ya hay implementado anonimos y cuentas gratuitas de todo tipo (hasta la de gmail te servira y facebook tambien trabaja con ello, imaginate), si se usa un servidor que lo permita (la mayoria XD) podra conectarse con cualquier cliente y servidor externo. Ademas ellos implementan tambien transportes que ofrecen variedad de funcionalidades, yo solo usaria un servidor propio si deseo usar un dominio personalizado a ofrecer (aunque creo que tambien es compatible con google apps con tu dominio, pero menos personalizable).

Yo noy especialista, solo nivel usuario, pero usuarios del foro (no dare nombres pues ellos ya apareceran por si solos... o en jabber siempre estan XD) se han encargado de administrar, programas bots y alguno hasta tiene su propia interfaz web para ello. Cierto usuario ademas tiene una firma dinamica que se actualiza mediante un bot XMPP bastante chula ^^.
Unos lo usan por ocio, otros para trabajo, algunos para desarrollo y otros simplemente para charlar XD

Por la sala offtopic@conf.jabberes.org me han comentado un par de cosillas, librerias y demas para lo que buscas, pero yo..., ni idea XD. Es una de las que suelo habituar y hay gente repartida con grandes conocimientos por distintas salas.

hilo_clientes-para-la-red-jabber-xmpp_1415696
hilo_jabber-xmpp-open-discussion-day-dia-de-comunicacion-libre_1024552
etc...
Esos post ya me los he leido, ya se que en la sala de eol más concretamente, hay gente muy muy competente, tengo conocimiento de ello. La idea es implantar un chat en una web, supongo e imagino, mi jefe no me da demasiados detalles, que a modo de ayuda o soporte para la propia web, la idea de XMPP no me hace tampoco mucha gracia, por el echo que requiere registro, un fácil registro, pero registro, o bueno usar una cuenta válida, la idea era tirar de chat lo mas sencillo posible, pero todo lo que encuentro son alternativas churrusqueras, y no óptimas, llamadas continuas en ajax, etc.

Ya te digo yo de programación web empezando, siempre he sido de aplicación de escritorio XD XD
Con Longpolling no tienes que esperar hasta el timeout, en cuanto haya mensajes nuevos, el servidor responde. Pongamos un ejemplo:
El cliente solicita mensajes.php?mensaje=10 , donde mensaje es el último mensaje leído

El código de mensajes.php podría ser algo así

$ultimo = $_GET['mensaje'];

while ($ultimo == getUltimo() )
    sleep(1);

mostrarMensajes($ultimo);



Una vez llame a "mostrarMensajes" , respondará al cliente y este los mostrará en ese momento. En www.asociacionoberon.es tengo un tagboard usando longpolling y va bien. Hay un retardo de uno o dos segundo como máximo, pero es que el servidor está bastante justico...
rcaba escribió:Esos post ya me los he leido, ya se que en la sala de eol más concretamente, hay gente muy muy competente, tengo conocimiento de ello. La idea es implantar un chat en una web, supongo e imagino, mi jefe no me da demasiados detalles, que a modo de ayuda o soporte para la propia web, la idea de XMPP no me hace tampoco mucha gracia, por el echo que requiere registro, un fácil registro, pero registro, o bueno usar una cuenta válida, la idea era tirar de chat lo mas sencillo posible, pero todo lo que encuentro son alternativas churrusqueras, y no óptimas, llamadas continuas en ajax, etc.

Ya te digo yo de programación web empezando, siempre he sido de aplicación de escritorio XD XD


jabberiano Naw escribió:no es necesario el registro, que se pueden usar cuentas anonimas que se registran al instante sin interaccion del usuario (es lo que hace muckl y speeqe)
Si lo que busca es no una sala de chat sino hablar con un usuario especifico, tiene Tigase Minichat y seguro que mas cosas


Con Muckl solo necesitas poner un nick al entrar y ya esta, como muestra te deje un enlace de ejemplo en mi anterior post, ni registros ni nada: http://www.jabberes.org/salas/entrar/?room=offtopic eso si, entonces no tendran datos personalizados, solo el nick (avatares, datos personales, imagen, etc).
Posiblemente Jappix, JWChat, Speeqe o algun otro cliente web implementa lo que tu necesitas, pero en cualquier caso, supongo que lo que necesitas esta contenido en este XEP, que cualquier servidor actual deberia soportar:

XMPP Over BOSH http://xmpp.org/extensions/xep-0206.html
Al final lo que he pensado hacer, es instalar un servidor tipo openfire o ejabberd, y programarme yo el cliente.

La idea es hacer una sala donde se conecten todos pero la comunicación la quieren solo 1 a 1, osea todos en la misma sala pero solo puedes hablar por privado con una persona, supongo que no habrá ningún problema.

Ahora quería mirarme que ofrece la parte de administración de dichos servidores.
rcaba escribió:Al final lo que he pensado hacer, es instalar un servidor tipo openfire o ejabberd, y programarme yo el cliente.

La idea es hacer una sala donde se conecten todos pero la comunicación la quieren solo 1 a 1, osea todos en la misma sala pero solo puedes hablar por privado con una persona, supongo que no habrá ningún problema.

Ahora quería mirarme que ofrece la parte de administración de dichos servidores.


Creo que eso se soluciona cojiendo y quitando voz en la sala (como estado predefinido), creo que aun asi puedes enviar privados, pero no hablar lo que es por el chat.

Pero vamos, sino es necesario una sala..., que esten en su roster (lista de contactos) y de ahi hablen con quien necesiten. Y podrias dejar la sala en silencio cojiendo y el moderador o admin oportuno colgando anuncios, info necesaria, etc.
La idea básicamente es el mismo chat de facebook, que te loguees y te aparecen los contactos conectados, y tu a ellos, ya te digo una réplica practicamente exacta del chat de facebook.

PD: Se que es distinto a lo que he dicho esta mañana, pero es que ya he cogio a mi jefe por banda para que me diga que era exactamente lo que quiere, porque se explica como un libro abierto el tio XD
rcaba escribió:La idea básicamente es el mismo chat de facebook, que te loguees y te aparecen los contactos conectados, y tu a ellos, ya te digo una réplica practicamente exacta del chat de facebook.

Pues eso no es mas que un roster, con tus contactos, y punto XD
Cualquier cliente, sin que soporte salas, te ofrece eso.
Si ha de ser por web, JWchat por ejemplo funciona con cualquier cuenta, y te muestra tu roster (lista de contactos). Luego, si quieres, entras a salas, pero es, claro, opcional.
Ya pero se trata de hacerlo transparente al user, básicamente, a través de la página web, ya te digo que no tengo yo tampoco todavía muy claro que es lo que quieren, pero esa es la idea.

Si poderse hacer se tiene que poder cualquier cliente como tu has dicho lo implementa, a ver si hoy empiezo a meterle mano y me bajo alguna librería javascript para tratar con XMPP.

Gracias por vuestra ayuda :)
rcaba escribió:Ya pero se trata de hacerlo transparente al user, básicamente, a través de la página web, ya te digo que no tengo yo tampoco todavía muy claro que es lo que quieren, pero esa es la idea.

Si poderse hacer se tiene que poder cualquier cliente como tu has dicho lo implementa, a ver si hoy empiezo a meterle mano y me bajo alguna librería javascript para tratar con XMPP.

Gracias por vuestra ayuda :)


Segun veo lo que quieren es simplemente un chat (sin sala ni nada) como de facebook, tuenti, etc de otros sitios.

Hay mil opciones, pero debes tambien mirar DONDE lo debes integrar, ¿sera una pagina solo con ello?, estara puesto dentro de una pagina interna de la empresa a modo de intranet?, estara accesible al publico?.
Si es interna de la empresa desde el server tal vez pueda designarse un usuario especifico dependiendo de la IP/mac del pc. En el caso que se tenga acceso externo HABRA SI O SI que mirar el tema de autentificacion, no serviria uno anonimo pues vulneraria las leyes de seguridad de datos lo mas seguro.

Como otra muestra de ello esta gtalk (que en parte se basa también en lo mismo y es compatible), por si lo usáis dentro de la empresa puede ser otra opción viable fácilmente implementable en cualquier web pues ya disponen código para ello creo.
La idea no se si es un widget tipo el de facebook, o una pagina entera para el chat, la verdad es que no me dicen mucho más, será accesible al público, el sistema de registro y demas lo haremos nosotros y ya registraremos al usuario en el server XMPP, vamos que va a ser transparente al usuario, como facebook.

Para la autentificación, como usaré alguna librería javascript, ya que trabajamos en asp y según he visto no hay ningna libreriapara tratar con XMPP, imagino que esta librería se encargará de cifrar los datos, o eso espero [sonrisa] [sonrisa]
14 respuestas