Desarrollo de un cliente Jabber siguiendo el manual de iain Shigeoka

Contenido archivado

El contenido de la web se encuentra archivado y no se podrá crear nuevo contenido. Más información.

Tagged:

hola!
Estoy desarrollando un cliente Jabber para mi PFC y no consigo recibir los mensajes que me llegan del servidor. Puede ser cosa del cortafuegos?aunque creo que lo tengo casi todo permitido. Además, tampoco se muy bien cómo comprobar si realmente me ha enviado el mensaje al servidor. bueno, pues haber si alguien sabe algo y me lo puede decir porque me toy volviendo loca. Gracias!!!!

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.

Si con tu cliente ya estás

Si con tu cliente ya estás conectada al servidor, tendrías que recibir mensajes, ya que toda la comunicación se hace con la misma conexión (al puerto 5222 del servidor).

Te recomendaría que para desarrollar o probar programas usaras tus propios servicios. O sea, que te pongas un servidor Jabber en tu PC y pruebes en él tu cliente.

La primera razón es: que si usas un servidor público con un programa defectuoso puedes poner en riesgo el servidor. No es que el servidor se vaya a caer (que no debería, jeje), pero podría ser que envies mensajes extraños y te considere un atacante malicioso.

La principal ventaja para ti es que al ser el administrador de tu propio servidor, puedes comprobar si el servidor envia los mensajes, si los recibe, quién se conecta, etc.

Si no quieres liarte con la instalación completa de un servidor Jabber puede interesarte Erlang REPOS. Es una iso que puedes grabar en CD-R o CD-RW o montar directamente. Lleva preinstalado el servidor Ejabberd. Metes el CD, lo ejecutas, luego tecleas 'ejabberd:start().' en esa ventana, o algo similar y ya tienes tu servidor funcionando. Entonces pruebas a conectar con Psi u otro cliente. Verás en la ventana del Ejabberd cómo informa de tu conexión, etc. Luego pruebas con tu cliente a ver qué pasa :)

Si en vez de iniciar Ejabberd con 'ejabberd:start().' lo inicias con 'jeai:start().' o algo así entonces puedes acceder con el navegador a una página que te muestra TODOS los paquetes que pasan por el servidor, con la fecha, etc.

como configurar el servidor

Hola!
Hice lo que me dijiste para ejecutar el servidor, pero no se como se configura y, despues de ejecutarlo, como se el nombre del servidor para conectarme con mi cliente?
Otra pregunta: tengo creadas dos cuentas en jabberes.org, a través de mi servidor, puedo conectarme con ellas?

Buff, como verás, estoy hecha un lio y te agradezco la ayuda que puedas prestarme.

un saludo!!

--- no se como se configura

--- no se como se configura

Ejabberd se configura con un fichero ejabberd.cfg. Viene con una configuración básica. Si te interesa, puedes copiarte el contenido del CD al disco duro, así no necesitas tener el CD siempre metido, y además puedes modificar la configuración a gusto.

--- como se el nombre del servidor para conectarme con mi cliente?

Eso se define en ejabberd.cfg:

% Host name:
{host, "localhost"}.

Por defecto el nombre del servidor es 'localhost'. O sea, que las cuentas serán 'pepito@localhost', no se conecta a la red Jabber y solo se puede acceder a él desde tu propia máquina. Esto es intencionado, claro.

--- tengo creadas dos cuentas en jabberes.org, a través de mi servidor, puedo conectarme con ellas?

Si lo que quieres es probar a charlar entre un usuario de tu servidor experimental y otro de jabberes.org, tal como lo tienes configurado ahora no puedes. De todas formas, siendo administradora de tu propio servidor, ¿porqué no te creas dos o tres cuentas en él, y pruebas el cliente simulando conversaciones entre usuarios de tu servidor?

Crear usuarios

Hola!
lo siento, pero estoy muy perdida. Al final, como no me arreglaba bien con el simulador para crear los usuarios, pues instale el servidor Ejabberd pero tampoco se cómo se crean, con lo cual, no lo puedo probar. Me puedes explicar como se hace?
Gracias otra vez

crear una cuenta

Pues como siempre, con algun cliente Jabber como Psi, Exodus, Pandion... seleccionas 'crear esta cuenta' o como se haga en cada cliente. Lo único destacable es que tu servidor es localhost, no puedes usar SSL, TLS ni SASL y solo puedes conectar desde el mismo ordenador donde tienes funcionando el servidor.

Y ya te la debería crear.

error

hola! en el mensaje anterior, hay un error en el codigo:
donde pone XMLInputSource es solamente InputSource y session.getReader devuelve un objeto reader que es un buffer de lectura. Pues se queda tieso ya cuando intento acceder al buffer de lectura.

problemas para recibir los mensajes

hola!
Al final consegui instalar el servidor y crear a los usuarios, pero use el jive_messenger 2.0.1.
Probe mi cliente y funciona a medias. Lo que hice fue lanzar un usuario con mi cliente y otro desde un PSI. El usuario que utiliza mi cliente manda un mensaje al que utiliza el PSI y este lo recibe, pero yo no soy capaz a leer los mensajes que me manda el servidor y no se porqué.
Estoy utilizando un analizador SAX de la librería Xerces que se ejecuta en una hebra aparte. cuando llega un mensaje del servidor, se produce un evento y entonces se supone que se analiza el stream de llegada y se mete en una cola. Pero no funciona. Quizás tu sepas que estoy haciendo mal porque no tengo ni idea.
Te mando un fragmento del codigo por si me puedes ayudar o si sabes de alguien que esté teniendo el mismo problema. Gracias otra vez. Un saludo

import org.xml.sax.SAXException;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
import org.apache.xerces.parsers.SAXParser;

public class JabberInputHandler extends DefaultHandler
{
PacketQueue packetQ;
Session session;

public JabberInputHandler(PacketQueue packetQueue)
{
packetQ= packetQueue;
}

/*********************************************/

public void process(Session session)throws IOException, SAXException
{
//directamente crea un analizador SAX Xerces
SAXParser parser = new SAXParser();

//maneja contenidos para el analizador SAX
parser.setContentHandler(this);

// maneja streaming XML
parser.setReaderFactory(new StreamingCharFactory());

//salva la sesión
this.session = session;

//inicia el análisis del analizador SAX
XMLInputSource a = new XMLInputSource(session.getReader());

parser.parse(a);
}

Gracias :)

Hola!
Oye, muchas gracias. Todavía no lo he podido probar porque no tengo muy buena conexión (7k) y se me corta asi que mañana cuando vaya a la beca que hay mejor conexión, ya lo bajo, lo pruebo y te cuento.
Un saludo!!!!!