Smack API

RECU-0246 (Recurso Ficha Técnica)

Descripción

Smack es una API Open Source para clientes XMPP que esta siendo usada tanto en dispositivos móviles como en grandes servidores.

Ejemplo de uso

Envío de mensajes

El envío de mensajes de ida y vuelta es lo esencial en la mensajería instantánea. Aunque los mensajes individuales pueden ser enviados como paquetes, generalmente es más fácil tratar las cadenas de mensajes en una conversación utilizando la clase org.jivesoftware.smack.Chat. Un objeto Chat crea un nuevo hilo de mensajes (utilizando un identificador de hilo) entre dos usuarios, el siguiente fragmento de código muestra como crear un objeto Chat con un usuario y el envío de un mensaje de texto

XMPPConnection connection = new XMPPConnection(Props.DIRECCION_IP_SERVIDOR);
connection.connect();
connection.login("usuario@servidor", "contrasenia");
Chat chat = connection.getChatManager().createChat("usuario@servidor", new MessageListener() {

    public void processMessage(Chat chat, Message message) {
        System.out.println("Mensaje Recibido: " + message);
    }
});
try {
     chat.sendMessage("Hola Mundo!");
}catch (XMPPException e) {   
     System.out.println("Error en la entrega del mensaje");
}

El MessageListener que se especifica cuando se crea el chat es notificado cada vez que un nuevo mensaje llega desde el otro usuario en la conversación.

El método Chat.sendMessage(String) crea un objeto Message, asigna un valor al cuerpo utilizando una cadena como parámetro y envía el mensaje. Si se quisieran valores adicionales en el mensaje antes de enviarlo, entonces se invocaría el método Chat.createMessage() como en el siguiente código:

Message mensajeNuevo = newChat.createMessage();
mensajeNuevo.setBody("Hola MADEJA");
mensajeNuevo.setProperty("colorFavorito", "azul");
newChat.sendMessage(mensajeNuevo);

Uso y recomendaciones conocidas

  • Framework de AMAP Consejo de cantabria

Ventajas e inconvenientes

Las principales ventajas son

  • Extremadamente fácil de usar pero al mismo momento con una poderosa API.
  • No hace falta programar al nivel de paquetes como otras librerías. Smack provee una interfaz para trabajar a alto nivel como por ejemplo las clases Chat y GroupChat, lo cual permite desarrollar de modo eficiente.
  • No hace falta estar familiarizado con el formato XMPP XML ni siquiera con XML.
  • Open Source bajo la licencia de Apache, lo cual habilita para poder incluir a Smack en aplicaciones comerciales y no-comerciales.
  • Desarrollada en Java aprovechando las características propias del lenguaje

Requisitos e incompatibilidades

  • Tener instalada la maquina virtual en la versión 1.2 en adelante
  • smack.jar
  • smackx.jar
  • smackx-debug.jar

Enlaces externos