Nuevo cliente jabber

Tagged:

Cliente de Jabber "UCi Messenger"

Hola amigos. Resulta ser que estoy creando un cliente jabber nuevo para mi universidad. Lo he bautizado como "UCi Messenger" y esta soportado sobre XMPP claro esta jij mejor no podia ser.

Bueno yo soy nuevo con todo esto del XMPP pero lo he logrado entender a la perfeccion. Lo unico que no he logrado aun hacer es entenderme con los servidores que usan el metodo Digest, dado que no se de que manera se encripta la contraseña y todo esto pues entonces no he podido avanzar hacia los servidores que usan este metodo. Tengo montado un server de ejabberd y todo me funciona bien mientras intento hacer login por texto plano.

Bueno lo estoy desarrollando con Delphi 7 y esta quedando muy bueno. Pero necesito un poco de ayuda de los expertos y mejor sitio que este para eso creo que no hay.

Alguien podria por favor darme alguna referencia, algun sitio para hospedar el proyecto o algo asi ??

Ha otra cosa. Estoy creando una libreria llamada XMPPCore.dll y ahi estoy metiendo todas los metodos para trabajar con el XML, es decir para leer lo que me envia el servidor y crear los streams que voy a enviar al servidor. Cuando la tenga adelantada posteo el codigo para que me den sugerencias. Ademas de que quiero hacer el "UCi Messenger" de codigo abierto para que otras personas puedan aportar ideas e incluso utilizar las cosas que yo he logrado crear.

Espero ayuda please. !

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Cliente de jabber

Amigos a ves si logro explicarme la duda que tengo.

Cuando un cliente se instala por primera ves deberia entonces solicitar al servidor el roster del cliente, o sea la lista de conctacto. Pero de aqui en adelante el no la volveria a pedir a menos que se desistale nuevamente el cliente dado que ya al tener la lista solo tiene que manejas las personas que te agreguen o que te borren no ??

Esta seria la forma correcta o me recomiendan otra ?

Mirate Roster versioning

Te olvidas de tener en cuenta que el usuario puede haber conectado a su cuenta desde otro PC o desde otro cliente y haber modificado la lista de contactos. O puede que el administrador del servidor la haya modificado.

En estos casos si usas únicamente la lista guardada localmente tendrás información que no está actualizada.

La manera tradicional es pedir toda la lista de contactos cada vez. Esto es un desperdicio de recursos que seguramente se note en servidores con muchos usuarios o clientes ejecutándose en teléfonos móviles. Para evitar esto se desarolló Roster Versioning de forma que tu guardes la lista localmente y descargues únicamente modificaciones, si las ha habido.

Roster Versioning

Si ajaja la verdad que eso esta muy util y mejora notablemente el rendimiento y el ancho de banda consumido en la red dado que cada ves que un cliente arranca pues tiene que pedir la lista y solo va a recibir las notificaciones. Claro que si no hay no va a recibir nada ggg !

Mira he creado este xml que seria la manera correcta de pedirle a mi servidor el roster. Pero aun incluyendole elatributo ver en el namespace el servidor me sigue devolviendo la lista completa. Sabes por que sucede esto?

Este es el XML que le envio al servidor.

------------------------------------------------------
< iq type="get" id="roster_1" from="fhernandez@jabber.uci.cu/desarrollador1" >< query xmlns="jabber:iq:roster" ver="ver14"/ >< /iq>
------------------------------------------------------

Sabes a que se deba que incluso enviandole el atributo ver="ver14" el servidor me siga enviando nuevamente la lista ?

Lo primero ¿el servidor

Lo primero ¿el servidor soporta roster versioning?

En tu cliente deberias comprobar si el servidor lo soporta, y si no lo hace, no usar versioning.

Lo siguiente, el "ver14" me parece que lo has sacado de la documentación pero no funciona así, el nombre de versión te lo da el servidor y no tiene por que ser "ver1","ver2","ver3" sino que podría ser "5ab4f","234ad".

Mirando por encima la especificación, cuando conectas y pides el roster normalmente (sin el ver) te dará el roster entero incluyendo el atributo ver. Tu localmente guarda el roster y el ver. Si mientras que estás conectado el servidor te informa de modificaciones, tu actualizas lo que has guardado en local (el roster y la versión) con los datos que da el servidor.

Roster Versioning

Haaaaaaaaaaaaaa. Ya voy entendiendo como seria la cosa jajaja.
Verdad que el que no sabes es como el que no ve.

Muchisimas gracias amigo.

del UCi Messenger

Bueno amigos ya he logrado conectarlo con mi servidor mediante TLS. Bueno ahora a trabajar y si pueden me echan una mano a ver si logro hacer un cliente potente con la ayuda de todos ustedes ggg !