DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

63
DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD ENTRE TELEFONIA MOVIL Y MENSAJERIA INSTANTANEA ANDRES FELIPE CHAVES BARRAGAN UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN BOGOTÁ, D.C. 2003

Transcript of DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

Page 1: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

DESARROLLO DE UNA APLICACIÓN PARA LACONECTIVIDAD ENTRE TELEFONIA MOVIL Y

MENSAJERIA INSTANTANEA

ANDRES FELIPE CHAVES BARRAGAN

UNIVERSIDAD DE LOS ANDESFACULTAD DE INGENIERÍA

DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓNBOGOTÁ, D.C.

2003

Page 2: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10

DESARROLLO DE UNA APLICACIÓN PARA LACONECTIVIDAD ENTRE TELEFONIA MOVIL Y

MENSAJERIA INSTANTANEA

ANDRES FELIPE CHAVES BARRAGAN

Trabajo de grado para optar al título deIngeniero de Sistemas y Computación

Director: Ingeniero HAROLD CRUZ

UNIVERSIDAD DE LOS ANDESFACULTAD DE INGENIERÍA

DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓNBOGOTÁ, D.C.

2003

Page 3: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10

1 TABLA DE CONTENIDO

1 TABLA DE CONTENIDO.......................................................................................32 INTRODUCCION.....................................................................................................53 OBJETIVOS .............................................................................................................7

3.1 Objetivo general...............................................................................................73.2 Objetivos específicos......................................................................................7

4 MARCO TEORICO..................................................................................................84.1 Conceptos básicos..........................................................................................8

4.1.1 Mensajería instantánea ..........................................................................84.1.2 Comunicación móvil................................................................................84.1.3 Wireless Application Protocol (WAP)...................................................8

4.2 Síntesis histórica .............................................................................................94.2.1 Historia de la mensajería instantánea..................................................94.2.2 Historia de la comunicación móvil......................................................124.2.3 Historia de WAP ....................................................................................13

5 METODOLOGIA ....................................................................................................146 FUNCIONAMIENTO DEL SISTEMA DE MENSAJERIA MSN......................15

6.1 Componentes del Sistema de Mensajería MSN......................................156.2 Protocolo de Comunicación de Mensajería MSN....................................16

6.2.1 Autenticación con el servicio de mensajería MSN...........................166.2.2 Sincronización con el servidor de mensajería MSN........................186.2.3 Estados de los Usuarios en el Servicio de Mensajería MSN.........196.2.4 Conversaciones con los contactos .....................................................196.2.5 Envío y Recepción de Mensajes.........................................................216.2.6 Manejo de errores .................................................................................21

7 ANALISIS DE REQUERIMIENTOS DE LA APLICACIÓN..............................227.1 Diagrama de casos de uso ..........................................................................227.2 Propósito del sistema desarrollado ............................................................227.3 Alcance del sistema ......................................................................................227.4 Descripción del sistema................................................................................237.5 Usuarios del sistema.....................................................................................237.6 Glosario de términos.....................................................................................237.7 Requerimientos funcionales ........................................................................23

8 DISEÑO DE LA ARQUITECTURA DE LA APLICACION...............................288.1 Arquitectura de Alto Nivel.............................................................................288.2 Modelo del Mundo.........................................................................................29

8.2.1 Componentes.........................................................................................298.2.2 Diagrama de Clases .............................................................................298.2.3 Clase Usuario.........................................................................................308.2.4 Clase Servicio ........................................................................................308.2.5 Clase Conexión......................................................................................31

Page 4: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 4

8.2.6 Clase ComandoMSN............................................................................328.2.7 Clase RequerimientoMSN....................................................................328.2.8 Clase RespuestaMSN...........................................................................338.2.9 Clase ConexionMSN.............................................................................348.2.10 Clase SesionMSN.................................................................................358.2.11 Clase MensajeMSN...............................................................................368.2.12 Clase ConexionMSNReader................................................................378.2.13 Interfaz ConexionMSNListener ...........................................................378.2.14 Clase EstadoMSN.................................................................................388.2.15 Clase UsuarioMSN................................................................................388.2.16 Clase MSNException............................................................................398.2.17 Diagramas de Secuencia .....................................................................398.2.18 Diagrama de Secuencia de Envió de un Comando Típico.............398.2.19 Diagrama de Secuencia de Recepción de un Comando Típico....408.2.20 Diagrama de Secuencia de Ingreso al Servicio de Mensajería .....418.2.21 Diagrama de Secuencia de Envío de Mensajes ..............................428.2.22 Diagrama de Secuencia de Recepción de Mensajes......................438.2.23 Diagrama de Secuencia de Visualizar Contactos............................438.2.24 Diagrama de Secuencia de Salir ........................................................44

8.3 UtilidadesXML................................................................................................448.3.1 Diagrama de Clases .............................................................................45

8.4 Capa de Presentación y Control.................................................................458.4.1 Diagrama de Clases .............................................................................468.4.2 Funcionamiento de la capa de presentación y control....................468.4.3 Diagrama de Secuencia .......................................................................49

9 HERRAMIENTAS DE DESARROLLO...............................................................509.1 Java 2 Standard Edition J2SE.....................................................................509.2 JavaDoc..........................................................................................................519.3 Servlets y Java Server Pages (JSP)..........................................................519.4 Apache Tomcat..............................................................................................529.5 Apache Ant.....................................................................................................529.6 UML y Power Designer.................................................................................529.7 Deck-It .............................................................................................................53

10 RESULTADOS ALCANZADOS ......................................................................5411 LIMITACIONES Y PROBLEMAS ENCONTRADOS ...................................55

11.1 Mantenimiento de la sesión en la aplicación WAP..................................5511.2 Restricciones de los dispositivos móviles..................................................5611.3 Interpretación de WML en dispositivos móviles .......................................56

12 POSIBLES DESARROLLOS EN EL FUTURO............................................5712.1 Enriquecer la funcionalidad .........................................................................5712.2 Incorporar nuevos servicios de mensajería ..............................................5712.3 Extender la capa de presentación ..............................................................5812.4 Aprovechar el desarrollo de la aplicación como un framework..............58

13 CONCLUSIONES..............................................................................................5914 BIBLIOGRAFIA ..................................................................................................60

Page 5: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10

2 INTRODUCCION

Para nadie es sorpresa que Internet ha cambiado la forma como la gente se

comunica. Para una gran parte del mundo, el correo electrónico reemplazó el

correo tradicional, el fax e incluso el teléfono. Todo esto gracias a la velocidad y

globalidad que Internet ofrece. Las formas de comunicación que usan Internet

son las que más rápido adopta la gente hoy en día.

De un lado, toda vez que el correo electrónico y otras tecnologías de Internet,

como los boletines, noticias y foros de discusión no permiten una comunicación

en línea, la mensajería instantánea ha tenido un crecimiento gigantesco.

De otro lado, el desarrollo de los dispositivos móviles, sumado a la posibilidad

de que desde estos se tenga conexión a Internet, ha ocasionado un auge en el

desarrollo de aplicaciones para los dispositivos móviles.

Por lo expuesto anteriormente, es necesario desarrollar aplicaciones que

permitan el uso de sistemas de mensajería desde dispositivos móviles. En

particular, en este trabajo de grado, se escogió desarrollar una aplicación que

permita la comunicación con sus contactos del sistema de mensajería MSN de

Microsoft a los usuarios de teléfonos celulares y a los usuarios de Internet que

no tienen el acceso a las aplicaciones de mensajería de escritorio. Esta es una

aplicación de tipo web a la que los celulares tienen acceso vía WAP.

La importancia del proyecto reside en el gran crecimiento que la mensajería

instantánea en Internet ha tenido en los últimos años y en que ésta ya es usada

no solo como un medio de entretención, sino como un medio de comunicación

corporativo y colaborativo.

Page 6: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 6

La viabilidad técnica del software obedece a que hoy en día los dispositivos

móviles se pueden conectar a Internet mediante diferentes protocolos de

comunicación, entre ellos WAP. Por esto, el trabajo de grado pretende unir

estas dos importantes formas de comunicación: la mensajería instantánea y la

comunicación móvil.

La utilidad del software es que permite el uso del sistema de mensajería MSN

desde cualquier dispositivo con acceso a Internet, en especial los teléfonos

celulares. Esto facilita la comunicación casi en cualquier lugar entre el usuario y

sus contactos. El uso que le de el usuario a este sistema de comunicación

puede ser entretención, responder o preguntar algo importante, o comunicación

con colaboradores del trabajo o hablar con sus familiares.

Además permite el uso del sistema de mensajería desde redes donde se

bloquea el uso de la mensajería ya sea por política de uso de la red o por

norma de seguridad.

Page 7: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 7

3 OBJETIVOS

3.1 Objetivo general

El objetivo del trabajo de grado consistió en desarrollar un software que

permitiera utilizar el sistema de mensajería de Microsoft MSN desde los

celulares, usando el protocolo WAP. Dicho software tiene en cuenta la

problemática que ofrece la visualización y las formas de interactuar que ofrece

un teléfono celular. Además, el software permite su uso desde un navegador

normal de Internet.

3.2 Objetivos específicos

§ Investigar y comprender el funcionamiento interno del sistema de

mensajería MSN

§ Realizar el proceso de diseño e implementación de la aplicación. El

diseño incluye la especificación de los requerimientos y la arquitectura

detallada y de alto nivel de la aplicación.

§ Documentar el desarrollo realizado

§ Establecer futuros desarrollos que enriquezcan la aplicación

Page 8: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 8

4 MARCO TEORICO

4.1 Conceptos básicos

4.1.1 Mensajería instantánea

Mensajería Instantánea o IM (Instant Messaging) es una forma de comunicación

usada sobre Internet o LANs, que permite que dos o más personas que tengan

una misma aplicación, envíen y reciban mensajes en línea. Es decir, permite

hacer una comunicación privada persona a persona (peer to peer), a diferencia

de los chats donde los mensajes son vistos por todos lo miembros del chat.

Además permite identificar cuáles contactos o amigos, están conectados y

cuáles no.

4.1.2 Comunicación móvil

La comunicación móvil es un sistema que permite al usuario comunicarse en

cualquier momento y desde cualquier lugar, sin necesidad de estar conectado

físicamente a alguna red.

4.1.3 Wireless Application Protocol (WAP)

Dado el crecimiento de Internet en la década del noventa, se empezó a pensar

en una forma de permitir conectividad entre la tecnología celular e Internet. Se

desarrolló el protocolo o reglas que debería seguir cualquier dispositivo móvil

para acceder al WWW. A este protocolo se lo llamó Wireless Application

Protocol, WAP. Este es, en los dispositivos móviles, el equivalente al protocolo

TCP/IP en los computadores.

Page 9: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 9

Dentro del protocolo WAP se especifica el lenguaje en que se deben desarrollar

las “paginas” para WAP. Este lenguaje se llama WML (Wíreless Markup

Language).

4.2 Síntesis histórica

4.2.1 Historia de la mensajería instantánea

A mediados de los 80’s, del siglo XX, antes de que existiera Internet, las

personas para interactuar mediante el computador usaban los bulletin boards

systems (BBS). Un BBS era una aplicación que corría en un computador que

corría el programa, al cual los demás computadores se conectaban vía

marcación mediante el módem.

Los BBS tenían una interfaz de texto y permitían a las personas escribir y dejar

mensajes en el boletín. Sin embargo, las personas tenían que esperar a recibir

respuesta en el boletín de sus mensajes. Debido a esto, se creó un canal

adicional en los BBS que permitía discutir en línea. Esto es considerado como

la primera idea de mensajería instantánea. Posteriormente se incluyeron en los

BBS servicios adicionales como transferencia de archivos y correo.

Como se dijo antes, para conectarse a un BBS las personas debían hacer una

llamada al computador destino, que tenía un costo significativo cuando no era

llamada local Por esto cada localidad o ciudad tenía su propia BBS y existían

muchos sistemas BBS. Sin embargo, como a cada BBS se conectaba solo la

gente de los alrededores se generaba un sentido de comunidad virtual.

Grandes compañías de comunicaciones, como America Online (AOL) y

Compuserve, empezaron a ofrecer servicios online (Online services) de tipo

nacional o internacional. Estos online services eran unas BBS más grandes,

estables y mejoradas, lo que permitió lograr comunidades con más personas.

Page 10: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 10

Entre tanto Internet empezaba a ser de acceso público. El origen de Internet se

remonta al proyecto ARPAnet, creado por la agencia ARPA (Advanced

Research Projects Agency). El objetivo de ARPAnet era el de tener una red que

permitiera el intercambio de información entre las entidades militares en caso

de un ataque nuclear. En 1968 ARPAnet, se libera de su objetivo militar y pasa

a ser usado por universidades. ARPAnet se componía en ese entonces por

cuatro nodos.

En 1982, se finaliza el protocolo TCP/IP, que es el protocolo de red y transporte

usado en Internet. Las universidades empezaron a crear redes de área local o

LANs (Local Area Networks) que empezaron a interconectar con otras LANs

mediante el protocolo TCP. La National Science Fundation Network, NSFnet

reemplazo entonces la red ARPA por rápidos backbones sobre los que se

soporta Internet.

La popularización de Internet empieza a comienzos de 1990, cuando se

desarrolla el protocolo HTTP (HyperText Transfer Protocol) y el lenguaje HTML

(HyperText Markup Language). Este protocolo usando una dirección de Internet

(URL) permite el envió de archivos creados usando HTML, que son mas

conocidos como paginas de Internet. Esta combinación de HTTP, HTML y URLs

es lo que se conoce como World Wide Web (WWW). En 1992 se crea la el

primer browser o navegador grafico llamado Mosaic, que permite una

visualización mas natural (similar a la que usamos hoy en día) de las paginas

HTML. Gracias a los browsers gráficos, el número de personas que usaban

Internet empezó a crecer y paso de ser una herramienta académica a una

herramienta de comunicación usada por el mundo.

En 1990, cuando Internet empezaba ya su crecimiento, se desarrollaron los

chats para Internet, que son aplicaciones que permiten el envío y recepción de

mensajes por parte de las personas conectadas a Internet y al chat. Estos

mensajes son leídos por todas las personas conectadas al chat, es decir, los

Page 11: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 11

mensajes no eran de una persona a otra, sino de una persona a las demás que

están conectadas.

En noviembre de 1996, se crea la primera aplicación de mensajería

instantánea, por un grupo de desarrolladores israelíes, fundadores de la

compañía Mirabilis. La aplicación se llamó ICQ (de I seek you) y su distribución

era gratis. En solo 6 meses, ICQ tenía 650000 usuarios registrados y en junio

de 1997 Mirabilis manejaba 100000 usuarios concurrentes. ICQ se convirtió en

uno de los programas mas usados en Internet.

América Online AOL, en 1998, compra a Mirabilis los derechos sobre ICQ y,

aparte de seguir comercializándolo, crea su propio sistema de mensajería: AOL

Instant Messenger (AIM).

Debido al auge de la mensajería instantánea, dos grandes compañías sacaron

al mercado sus sistemas de mensajería: Microsoft introdujo el MSN Messenger

y Yahoo el Yahoo Messenger.

Actualmente el mercado de la mensajería instantánea esta dominado por los

messengers mencionados anteriormente: ICQ, AIM, MSN y YahooM. Debido a

que cada una de las compañías quiere dominar el mercado, los messengers no

son interoperables entre si. Sin embargo, existe otra compañía de servicio de

mensajería llamada Jabber, que usa protocolos abiertos y documentados,

basados en estándares, lo que permite interoperabilidad.

Debido a la falta de interoperabilidad, se han creado aplicaciones de otras

compañías que permiten correr varios messengers en un mismo programa.

Entre los programas mas conocidos están: Trillian, Imici, Odigo, Omni y Gaim.

Hoy en día, las aplicaciones de mensajería incluyen servicios adicionales tales

como:

Page 12: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 12

• Chats• Envío de imágenes y archivos• Mensajes de voz• Contenido agregado, tales como integración con portales (por ejemplo

yahoo y msn network), noticias, finanzas, etc.

4.2.2 Historia de la comunicación móvil

La comunicación móvil tiene sus inicios en 1921, cuando se desarrolló el primer

sistema de comunicación por radio (en la frecuencia de 2 Mhz).

Los primeros sistemas de radio fueron mejorados, disminuyendo el ruido y

mejorando la calidad de la señal, haciendo posible que la comunicación radial

empezara a ser comercializada en 1946. Cuando la radio entró en la era de la

comercialización, en los Estados Unidos, la Federal Communications

Commision, FCC, empieza a asignar frecuencias electromagnéticas y ampliar

su rango.

En 1964, se introdujeron los sistemas selectores de canales que permitieron

eliminar tanto la operación manual del radio (o necesidad de oprimir para

hablar) como la intermediación de una operadora para conectar dos equipos de

radio.

Dada la demanda del espectro radial y la saturación de las diferentes

frecuencias, la FCC empezó a investigar formas de comunicación

electromagnética con menor saturación y mayor eficiencia que el radio, en un

espectro de frecuencias mayor. En 1971, la AT&T realizó la propuesta técnica

de radio celular para lograr estos objetivos, que posteriormente fue aprobada e

implementada en 1983. Los conceptos claves de la telefonía celular habían sido

descubiertos por investigadores de los Laboratorios de Bell en 1947.

Page 13: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 13

La radio celular creó un ambiente de comunicación telefónica diferente al

tradicional. La ventaja principal de la telefonía celular consistió en la capacidad

de permitir la comunicación a muchos usuarios dentro de un número limitado de

canales. Se subdividieron las zonas geográficas en pequeñas secciones

llamadas células, lo que permitió la reutilización de frecuencias siempre y

cuando una célula esté suficientemente separada de la otra, con lo cual se

amplió la capacidad del espectro magnético.

La comunicación celular usó una transmisión análoga llamada Advanced Mobile

Phone Service (AMPS). En 1996, se cambió a transmisión digital con el

desarrollo de la tecnología Time Division Multiple Access (TDMA). Esta

tecnología la usa AT&T y Southwestern Bell. Se estableció el sistema Code

Division Multiple Access (CDMA) usado por Sprint, GTE, Bell Atlantic y el Global

System for Mobile Communications (GSM) usado por Pacific Bell y Omnipoint.

La diferencia entre estos sistemas digitales está en las formas de procesar y

codificar la voz y la información.

4.2.3 Historia de WAP

El protocolo WAP fue elaborado por Motorola, Nokia, Ericsonn y Unwired

Planet, cuando formaron el Foro WAP en 1997. A este foro se han sumado más

compañías, como Microsoft, Intel, Palm y otras.

En 1998 se anunció la versión 1.0 del protocolo WAP; en 1999 sale la versión

1.1 y al finalizar este mismo año se publica la versión 1.2.

El acceso a Internet desde dispositivos móviles ha estado en continuo

desarrollo para superar limitaciones tales como, la velocidad de conexión, la

poca cantidad de memoria de los dispositivos, la interfaz de comunicación y el

alto costo.

Page 14: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 14

5 METODOLOGIA

Para el cumplimiento de los objetivos se manejó la siguiente metodología de

desarrollo de software:

• Definición del problema de investigación

• Investigación del funcionamiento del sistema de mensajería MSN en

aspectos como componentes, protocolo, formas de autenticación.

• Diseño general y detallado de la aplicación y sus componentes. Dentro

de este diseño se encuentra la especificación de los requerimientos,

diagrama de casos de uso, de componentes, de clases y de secuencia.

• Implementación de la Aplicación, según el diseño. Esta codificación se

hace simultáneamente con la documentación del desarrollo.

• Realización de pruebas desde los diferentes clientes (Celulares y

Navegadores).

• Análisis y conclusiones

Page 15: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 15

6 FUNCIONAMIENTO DEL SISTEMA DE MENSAJERIA MSN

El servicio de mensajería de Microsoft, llamado MSN Messenger se empezó a

comercializar en 1999. Los ingenieros que desarrollaron el sistema mensajería

MSN realizaron un documento (Internet draft) donde se explica el

funcionamiento del protocolo. En este capítulo se explican las generalidades y

detalles del funcionamiento, expuestas en el Internet draft y que son adoptadas

en la aplicación que se ha desarrollado. 1

6.1 Componentes del Sistema de Mensajería MSN

La comunicación con el servicio de mensajería se divide en tres grandes áreas

o pasos. Cada paso se puede ver como un servicio o servidor. Se dividió en

estos tres componentes para garantizar escalabilidad, de tal forma que si

alguno de ellos presentaba cuellos de botella pudiera fácilmente agregarse

hardware para soportar el componente u optimizar este. Los componentes son:

Dispatch Server, Notification Server y Switchboard Server.

El Dispatch Server es el componente encargado de recibir la conexión inicial

con los clientes, realizar las negociaciones necesarias del protocolo y

determinar cual Notification Server atenderá el cliente para su redirección.

El Notification Server es el componente core o principal. Su función es

autenticar al usuario, sincronizar información entre el cliente y el servidor y

notificar eventos asincrónicos (por ejemplo: cuando un contacto entra o sale,

cuando ocurre un cambio de estado, cuando un contacto quiere iniciar una

conversación). La conexión al Notification Server permanece durante todo el

tiempo que el usuario este conectado al servicio de mensajería.

1 Adaptado del Internet Draft: MSN Messenger Service 1.0 Protocol

Page 16: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 16

El Switchboard Server les permite a los usuarios del servicio establecer

comunicación con sus contactos a través de sesiones. Por cada conversación

que tenga el usuario con sus contactos el switchboard server asigna una sesión

nueva.

6.2 Protocolo de Comunicación de Mensajería MSN

El cliente de mensajería inicialmente debe abrir una conexión TCP por el puerto

1863 a la dirección messenger.hotmail.com.

La comunicación entre el cliente y el servidor se hace a través de comandos.

Un comando es una cadena de caracteres de una sola línea, compuesta por:

tres caracteres que especifican el tipo de acción (ver anexo A) (por ejemplo ILN)

y cero o más parámetros

El envío de comandos, así como la recepción de respuestas se hace de forma

asincrónica. Para poder distinguir cual respuesta corresponde a qué

requerimiento se maneja un Transaction ID.

6.2.1 Autenticación con el servicio de mensajería MSN

El primer paso para autenticarse es especificar que versión del protocolo se va

a hablar (en los ejemplos C representa al cliente y S al componente de

mensajería):

C: VER 287970511 MSNP2S: VER 287970511 MSNP2

Una vez el servidor ha respondido con la versión del protocolo, se establece la

forma de autenticación. La autenticación es MD5:

Page 17: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 17

C: INF 287971513S: INF 287971513 MD5

Después de establecida la forma de autenticación se procede a autenticar:

C: USR 287972514 MD5 I [email protected]

El Dispatch Server devuelve el Notification Server asignado, es decir devuelve

una dirección IP y un puerto:

S: XFR 287972514 NS 207.46.106.124:1863

Una vez recibida la dirección y el puerto, el cliente de mensajería se debe

desconectar del Dispatch Server y conectarse al Notification Server, donde se

debe volver a establecer el protocolo y continuar la autenticación:

C: VER 287973686 MSNP2S: VER 287973686 MSNP2C: INF 287974717S: INF 287974717 MD5

Una vez establecido el protocolo de Nuevo, se envía el comando USR, junto

con la forma de autenticación (MD5) y el login del usuario, el servidor responde

entonces con la llave de encripción.

A continuación se concatena la llave recibida con la clave del usuario y se envía

esta cadena resultante en formato hexadecimal. Si la autenticación es exitosa el

servidor envía un OK con el login y el nombre del usuario:

C: USR 287975719 MD5 I [email protected]: USR 287975719 MD5 S 1050026167.25027C: USR 287975719 MD5 S 40b096185b49dae4ab4991808b452d95S: USR 287975719 OK [email protected] tesis%20movil

Page 18: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 18

Por ultimo se envía al cambio de estado a estado online, para que el notification

server avise a los contactos que el usuario ha ingresado:

C: CHG 287977732 NLNS: CHG 287977732 NLN

6.2.2 Sincronización con el servidor de mensajería MSN

Después de la autenticación empieza la sincronización de listas de contactos,

las cuales son: la lista de usuarios a los que se permite enviar mensajes y lista

de bloqueos. La aplicación únicamente guarda la lista de contactos o forward

list.

En la mayoría de clientes de mensajería se guarda una copia local de estas

listas, que son la que se sincronizan con el servidor. Para el caso de la

aplicación de mensajería móvil no se tienen copias locales por lo que siempre

se guarda la lista enviada por el servidor. Para empezar a sincronizar se envía

el comando SYN con la versión actual de la lista. Como no se tiene ninguna

lista local se envía como versión un cero:

C: SYN 287977732 0S: SYN 287977732 24

El servidor devuelve la versión actual de las listas y empieza a enviar

respuestas asincrónicas con los usuarios de la lista:

S: LST 287977732 FL 24 1 4 [email protected] Andres%20.NETS: LST 287977732 FL 24 2 4 [email protected] Alex%20.NET

El servidor envía los estados iniciales de los contactos que estén online,

mediante el comando ILN:

S: ILN 7 AWY [email protected] Andres%20.NETS: ILN 7 AWY [email protected] Alex%20.NET

Page 19: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 19

6.2.3 Estados de los Usuarios en el Servicio de Mensajería MSN

El cliente de mensajería puede cambiar su estado (ver anexo B) con el

comando CHG:

C: CHG 287977732 AWYS: CHG 287977732 AWY

El Notification Server envía información asincrónica indicando cambios de

estado de los contactos:

S: NLN BSY [email protected] Andres

Si el contacto se desconecta se recibe un FLN:

S: FLN [email protected]

6.2.4 Conversaciones con los contactos

Existen dos formas para iniciar una conversación: Que un contacto invite al

usuario o que el usuario invite a un contacto. En cualquiera de los dos casos el

cliente de mensajería deberá iniciar una sesión con el switchboard server.

Si recibe una invitación de un contacto, el Notification Server envía el comando

RNG seguido de 6 parámetros: el id de la sesión creada por el contacto, la

dirección IP y el puerto del Switchboard Server, el método de autenticación

(CKI), un hash, el email y el nombre del contacto que esta invitando:

RNG 168 207.46.18.3:1863 CKI 105346.20310 [email protected] Andres

Page 20: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 20

Si el usuario es quien desea invitar, debe solicitar al Notification Server la

dirección y el hash de un Switchboard Server:

C: XFR 93870881 SBS: XFR 93870881 SB 207.46.10.17:1863 CKI 109356.1054342930.215

En cualquiera de los dos casos el cliente de mensajería debe conectarse a la

dirección que da el Notification Server y una vez conectado, si es el usuario el

que esta creando la sesión se autentica con el Switchboard Server, enviando el

hash que se recibe:

C: USR 93872093 [email protected] 109356.1054342930.215S: USR 93872093 OK [email protected] Tesis%20Movil

Para invitar a un usuario a la sesión establecida se usa el comando CAL, una

vez el contacto entra a la sesión se recibe el comando JOI:

C: CAL 93873094 [email protected]: CAL 93873094 RINGING 109356S: JOI [email protected] Andres

Si el usuario fue invitado a una sesión existente se debe autenticar con el

comando ANS y el hash recibido en el XFR, una vez hecho esto la información

de los contactos que ya están dentro de la sesión se reciben con el comando

IRO:

C: ANS 43543 [email protected] 105346.20310S: IRO 43543 1 1 [email protected] AndresS: ANS 43543 OK

Cuando un usuario se desconecta de la sesión se recibe el comando BYE:

S: BYE [email protected]

Page 21: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 21

6.2.5 Envío y Recepción de Mensajes

Para enviar un mensaje se usa el comando MSG, con el Transaction ID,

seguido de A, para el acknowledge del mensaje, la longitud en bytes del

mensaje y el mensaje.

El sistema de mensajería MSN maneja mensajes de tipo MIME. Estos se

componen de un cabezote (MIME-Header) y del cuerpo del mensaje (MIME-

Body):

C: MSG 234234 A 129MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8

HeyS: ACK 234234

Cuando se recibe un mensaje el servidor envía el mensaje enviado por el

contacto:

MSG [email protected] Andres 130 MIME-Version: 1.0

Hola

6.2.6 Manejo de errores

Cuando ocurren errores el servidor los envía con el siguiente formato: eee

(Transaction Id) error-info parámetros. Donde eee es el código del error (ver

anexo), transaction id es el id del comando que generó el error (si es un error

del servidor no se envía TriiD)

S: 200 ERR_SYNTAX_ERROR

Page 22: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 22

7 ANALISIS DE REQUERIMIENTOS DE LA APLICACIÓN

7.1 Diagrama de casos de uso

7.2 Propósito del sistema desarrollado

El propósito del sistema es proveer conectividad desde los dispositivos

móviles (wap) y la web hacia los messengers usados tradicionalmente.

7.3 Alcance del sistema

El sistema permitirá que, desde dispositivos conectados vía WAP, se

intercambien mensajes con usuarios del sistema de mensajería de Microsoft

(MSN). Además permitirá que, desde navegadores tradicionales también

exista conectividad con este sistema de mensajería.

La arquitectura del sistema, deberá permitir escalabilidad de tal forma que

puedan ser fácilmente acoplados módulos de conectividad a otros sistemas

de mensajería.

Page 23: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 23

7.4 Descripción del sistema

El sistema permite interactuar con el sistema de mensajería de Microsoft

(MSN), adaptando su forma de uso a las restricciones de uso que tienen los

celulares. El sistema permitirá enviar, recibir mensajes, ver la lista de

usuarios online y cambiar el estado. El sistema permitirá acceder a estos

servicios vía web y wap.

7.5 Usuarios del sistema

Cliente: Es el usuario que envía y recibe mensajes, usando la aplicación, desde

el celular o browser.

7.6 Glosario de términos

• Messenger: La definición básica es una aplicación que permite la

comunicación entre dos personas vía Internet.

• WAP: Wireless Application Protocol. Es un protocolo que define como es

la comunicación entre dispositivos wireless e Internet.

• Web: Se refiere a la navegación gráfica que se hace sobre las páginas

en Internet. La web se visualiza a través de browsers o navegadores.

7.7 Requerimientos funcionales

Identificador y Nombre:C1 ConectarTipo:Abstracto

Requerimiento que loutiliza o especializa:

Crítico?Si

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Entrada: Salida:Descripción:Este caso de uso engloba la funcionalidad de conexión a los sistemas demensajeríaManejo de Situaciones Anormales:

Page 24: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 24

Criterios de aceptación:

Identificador y Nombre:C1.1 Conectar MSNTipo:Concreto

Requerimiento que loutiliza o especializa:Conectarse

Crítico?Si

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Entrada:Correo: Correo mediante el cual elusuario se autentica (usualmente es elde Hotmail).Clave: Clave del usuario en el MSN

Salida:Se conecta al msn con los datos deentrada

Descripción:Mediante este caso de uso, el sistema conecta al cliente al servicio de mensajeríaMSNManejo de Situaciones Anormales:Si no se puede conectar se envía la razón por la que fue fallida la conexiónCriterios de aceptación:Se dará por aceptado, si se conecta al msn messenger, usando los datos deentrada, si estos son correctos.

Identificador y Nombre:C2 DesconectarTipo:Abstracto

Requerimiento que loutiliza o especializa:

Crítico?Si

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Entrada: Salida:Descripción:Permite al sistema cerrar las sesiones o conexiones que tiene un usuario a lossistemas de mensajeríaManejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si desconecta al usuario de los servicios de mensajería

Identificador y Nombre:C2.1 Desconectar MSNTipo:Concreto

Requerimiento que loutiliza o especializa:Desconectar

Crítico?Si

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Page 25: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 25

Entrada:Identificador del usuario

Salida:

Descripción:Cierra la conexión del usuario al MSN messengerManejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si desconecta al usuario del MSN messenger.

Identificador y Nombre:C3 Enviar MensajeTipo:Abstracto

Requerimiento que loutiliza o especializa:

Crítico?Si

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Entrada: Salida:Descripción:Este caso de uso le permite al cliente enviar un mensaje a un contacto que esteconectado a alguno de los sistemas de mensajería a los que el cliente estáconectado.Manejo de Situaciones Anormales:Criterios de aceptación:

Identificador y Nombre:C3.1 Enviar Mensaje MSNTipo:Concreto

Requerimiento que loutiliza o especializa:Enviar Mensaje

Crítico?Si

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Entrada:Identificador del contactoMensaje

Salida:

Descripción:Este caso de uso le permite al cliente enviar un mensaje a un contacto que esteconectado al MSN.Manejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si el mensaje es enviado al contacto escogido

Identificador y Nombre:C4 Recibir MensajeTipo:Abstracto

Requerimiento que loutiliza o especializa:

Crítico?Si

Page 26: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 26

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Entrada: Salida:Descripción:Este caso de uso le permite al cliente recibir un mensaje de alguno de suscontactos.Manejo de Situaciones Anormales:Criterios de aceptación:

Identificador y Nombre:C4.1 Recibir Mensaje MSNTipo:Concreto

Requerimiento que loutiliza o especializa:Recibir Mensaje

Crítico?Si

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Entrada:Nombre del contacto emisorLongitud del MensajeMensaje

Salida:

Descripción:Este caso de uso le permite al cliente recibir un mensaje de alguno de suscontactos del MSNManejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si se recibe el mensaje que ha enviado el contacto

Identificador y Nombre:C5 Ver ContactosTipo:Abstracto

Requerimiento que loutiliza o especializa:

Crítico?Si

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Entrada: Salida:Descripción:Este caso de uso le permite ver la lista de sus contactos en cada uno de losservicios de mensajería.Manejo de Situaciones Anormales:Criterios de aceptación:

Identificador y Nombre:C5.1 Ver Contactos MSN

Page 27: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 27

Tipo:Concreto

Requerimiento que loutiliza o especializa:Ver Contactos

Crítico?Si

Prioridad de Desarrollo:Alta

Actores:Cliente

Documentos devisualización asociados:

Entrada: Salida:Nombre del ContactoEmail del ContactoEstado del Contacto

Descripción:Este caso de uso le permite al cliente ver la lista de contactos del MSNmessenger. Por cada contacto debe aparecer el nick, el email y el estado.Manejo de Situaciones Anormales:Criterios de aceptación:Se aceptará, si se visualizan los contactos que tiene el cliente en el MSNmessenger.

Page 28: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 28

8 DISEÑO DE LA ARQUITECTURA DE LA APLICACION

8.1 Arquitectura de Alto Nivel

Se manejó una arquitectura de tres capas, como se ve en la figura. Es un

diseño MVC (Modelo Vista Controlador) donde las dos primeras capas son la

capa de presentación y de control y la segunda capa es el modelo del mundo.

Como la aplicación sirve para Web y para Wap, la arquitectura manejada

provee de flexibilidad y facilidad de desarrollo.

Page 29: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 29

8.2 Modelo del Mundo

8.2.1 Componentes

Se separó la aplicación en dos paquetes con prefijo co.uniandes.achaves:

MessengerMovil y utilidadesXML. El primero es el modelo real del mundo,

donde se lleva a cabo la conectividad con el servicio de mensajería MSN, el

segundo es un paquete que contiene clases que se comportan como

Contenedoras (HastTable) y como documento DOM.

8.2.2 Diagrama de Clases

Page 30: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 30

8.2.3 Clase Usuario

Usuario es la clase contenedora del modelo del mundo. Representa al usuario

de la aplicación. Posee uno o más servicios de mensajería (Clase Servicio) y

uno o más conexiones a estos (Clase Conexión).

Como la aplicación solo provee conectividad con el servicio de mensajería

MSN, Usuario posee un solo servicio y una sola conexión.

8.2.4 Clase Servicio

Page 31: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 31

Servicio representa la configuración de un perfil en algún servicio de

mensajería. Este perfil contiene el login y password de autenticación ante el

servicio y el nick en este. Además contiene el nombre del sistema de

mensajería.

8.2.5 Clase Conexión

Conexión representa la base en la comunicación con el sistema de mensajería.

La conexión esta compuesta por una dirección ip, un puerto y el socket que

representa la comunicación a ese servidor.

Conexión define seis métodos abstractos que cualquier conexión a un sistema

de mensajería debe ofrecer:

• Abrir, que abre el socket y establece comunicación con el servidor

• EnviarMensaje, que envía un mensaje a un contacto en el sistema de

mensajería

• VerMensajes, que permite ver los mensajes recibidos

• VerListaUsuarios, que permite ver los contactos del usuario, así como el

estado de cada uno de ellos

• EstaCerrada, que indica si esta cerrada o no la conexión con el servidor

• Cerrar, que cierra la conexión con el servicio de mensajería.

Page 32: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 32

8.2.6 Clase ComandoMSN

ComandoMSN representa un comando del protocolo MSN, como por ejemplo

USR o SYN. ComandoMSN posee atributos estáticos de tipo String por cada

Comando que tiene el protocolo de mensajería MSN. (Ver Anexo A).

8.2.7 Clase RequerimientoMSN

RequerimientoMSN representa una petición que se envía al servidor. Esta

compuesto por un ComandoMSN, un Transaction ID y una lista de argumentos.

Cuando se instancia un objeto RequerimientoMSN, este se encarga de asignar

un TriID único.

Page 33: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 33

8.2.8 Clase RespuestaMSN

RespuestaMSN representa una respuesta del servicio de mensajería MSN. Al

igual que el requerimientoMSN, esta compuesta de un ComandoMSN, un

transactionID y una lista de argumentos o parámetros. Adicionalmente se

guarda la respuesta tal como llega por el Stream de entrada.

RespuestaMSN ofrece además tres métodos estáticos: isMensaje, isError e

IsComando, para que la aplicación sepa si la cadena que llega por el stream de

entrada es un mensaje, una respuesta o un comando de error y decida que

evento generar.

Page 34: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 34

8.2.9 Clase ConexionMSN

ConexionMSN es una clase que hereda de la clase Conexión, de tal forma que

implementa los métodos abstractos de Conexión. Conexión se encarga de

manejar los componentes Dispatch Server y Notification Server del protocolo de

mensajería MSN. Entre sus funciones esta:

• La funcionalidad establecida por la clase Conexión: abrir, enviar un

mensaje, ver la lista de contactos, recibir mensaje y cerrar la conexión.

• Llevar a cabo los pasos de autenticación ante el servicio de mensajería.

Page 35: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 35

• Sincronizar la lista de contactos con el servidor.

• Enviar los diferentes Comandos hacia el Dispatch o Notification Server.

• Controlar y solicitar sesiones de chat para permitir enviar y recibir

mensajes.

• Recibir las respuestas o comandos que envía el servidor y manejar

apropiadamente cada una de ellas.

8.2.10 Clase SesionMSN

SesionMSN representa una sesión ante el componente del servicio MSN

Switchboard Server. Sus funciones son:

• Conectarse y desconectarse a las diferentes switchboard sessions

• Enviar Mensajes a la sesión

• Recibir los Mensajes que llegan por la sesión

• Invitar contactos a la sesión (CAL)

• Manejar respuestas dentro de la sesión. (Comandos IRO, JOI y BYE).

Page 36: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 36

8.2.11 Clase MensajeMSN

MensajeMSN representa un mensaje que se desea enviar a algún contacto o un

mensaje recibido. Posee dos métodos muy importantes para el envió y

visualización de los mensajes:

Procesar(String mensaje), que recibe un mensaje que llega por el stream de

entrada y lo procesa para separar el mensaje y el contacto que envía este y

ConvertirMensaje(), que convierte el mensaje ingresado por el usuario de la

aplicación en un mensaje MIME para que sea enviado por el stream de salida

de la sesión correspondiente.

MensajeMSN permite identificar cuales mensajes han sido leídos y cuales no, lo

cual permite visualizar de una mejor forma los mensajes.

Page 37: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 37

8.2.12 Clase ConexionMSNReader

La clase ConexionMSNReader se encarga de manejar el stream de entrada del

socket. ConexionMSNReader es el encargado de leer permanentemente el

Stream de entrada, que es un BufferedReader. Cuando lee que hay una

entrada por este reader, pregunta qué tipo de respuesta es (respuesta a una

petición, mensaje o error) y le avisa a todas las clases que implementan la

interfaz ConexionMSNReaderListener sobre la ocurrencia del nuevo evento.

Hay una clase ConexionMSNReader por cada socket abierto, es decir hay un

objeto reader de la conexión al Notification Server y un objeto por cada sesión.

8.2.13 Interfaz ConexionMSNListener

Esta interfaz, es implementada por la clase ConexionMSN y SesionMSN.

Mediante esta interfaz las dos clases se suscriben para recibir los eventos:

comandoRecibido, mensajeRecibido y errorRecibido.

Page 38: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 38

8.2.14 Clase EstadoMSN

EstadoMSN representa un estado de usuario en el servicio de mensajería MSN.

(Ver Anexo B).

8.2.15 Clase UsuarioMSN

UsuarioMSN representa un usuario o contacto del servicio de mensajería MSN.

Un usuarioMSN esta asociado a un estadoMSN, que es el estado que posee el

contacto.

Page 39: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 39

8.2.16 Clase MSNException

MSNException representa una excepción en la aplicación. Ya sea una

excepción interna o un mensaje de error del servidor de mensajería.

8.2.17 Diagramas de Secuencia

8.2.18 Diagrama de Secuencia de Envió de un Comando Típico

Mediante este proceso se envía una petición a cualquiera de los tres

componentes del servicio de mensajería. El objeto ConexionMSN instancia un

objeto RequerimientoMSN con el comando a enviar y los parámetros o

argumentos. Luego envía la representación de este objeto como cadena de

caracteres por el printWriter del stream de salida del socket.

Page 40: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 40

8.2.19 Diagrama de Secuencia de Recepción de un Comando Típico

Mediante este proceso se reciben las respuestas asincrónicas que envían los

componentes del servicio de mensajería. Inicialmente el objeto

ConexionMSNReader mediante un thread esta permanentemente revisando el

stream de entrada del socket. Cuando llega una cadena por el stream de

entrada, pregunta que tipo de entrada es (respuesta, error o mensaje). Si es

una respuesta, crea el objeto RespuestaMSN con la cadena de entrada y avisa

a todos sus escuchas (en este caso ConexionMSN) sobre la ocurrencia del

evento.

Page 41: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 41

8.2.20 Diagrama de Secuencia de Ingreso al Servicio de Mensajería

Mediante este proceso se realiza la autenticación del usuario al servicio de

mensajería. La capa de control solicita al modelo del mundo, abrir la conexión al

servicio. EL objeto conexionMSN abre la conexión al Dispatch Server, inicializa

el stream de salida y entrada y el escucha de la conexión. Una vez hecho esto

empieza a realizar el proceso de negociación del protocolo y autenticación. (ver

5.1.2 Protocolo de Comunicación de Mensajería MSN). Como este proceso se

realiza en una serie de pasos de forma petición/respuesta, se usa el método

obtenerRespuesta, que “duerme” la aplicación mientras no llegue una respuesta

con el mismo TriId del requerimiento. En el llamado al método Autenticar el

Dispatch Server devuelve la dirección del Notification Server, por lo que el

proceso vuelve a su estado inicial de abrir la nueva conexión. Luego de esto el

proceso de autenticación termina cuando el usuario cambia su estado a online.

Page 42: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 42

8.2.21 Diagrama de Secuencia de Envío de Mensajes

El controlador solicita al modelo enviarle un mensaje a un usuario. El objeto

ConexionMSN mira entonces si ya esta abierta una sesión de mensajería con el

usuario. Si no esta abierta la sesión se instancia una SesionMSN, se abre una

conexión al Switchboard e invita el usuario a la sesión. Si ya esta abierta

devuelve el objeto SesionMSN apropiado. Después de esto solicita a la

sesionMSN enviar el mensaje. SesionMSN le pide a MensajeMSN que

convierta el mensaje a tipo MIME. Y posteriormente lo envía por el printWriter

del stream de salida.

Page 43: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 43

8.2.22 Diagrama de Secuencia de Recepción de Mensajes

El thread del reader que esta escuchando el socket del Switchboard server

recibe una cadena por el stream de entrada. Luego de saber que la entrada es

de tipo mensaje, usando la longitud que viene en la entrada realiza un ciclo

hasta tener la totalidad del mensaje. Luego instancia un objeto MensajeMSN

para que procese el mensaje MIME y avisa a todos sus escuchas sobre la

ocurrencia del evento. En este caso el escucha es de tipo SesionMSN que

avisa a ConexionMSN sobre el mensaje para que este objeto lo guarde en la

colección de mensajes de tipo XMLHashTable.

8.2.23 Diagrama de Secuencia de Visualizar Contactos

Page 44: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 44

El controlador solicita al modelo del mundo ver la lista de contactos. La

conexionMSN devuelve entonces la colección XMLHashTable con los

contactos. Estos contactos y su estado llegan al modelo del mundo después de

iniciarse el proceso de sincronización mediante la recepción de un comando

típico (comando LST).

8.2.24 Diagrama de Secuencia de Salir

La conexionMSN para el escucha de la conexión al Notification Server y cierra

el socket. Posteriormente recorre todas las sesiones e invoca el método cerrar

en cada una de ellas.

8.3 UtilidadesXML

Utilidades XML es un paquete de utilidades que soporta el funcionamiento de la

aplicación, tanto en el modelo del mundo como en la capa de presentación.

XMLHashTable es una clase que se comporta como contenedor de tipo

HashTable y como documento DOM. Tiene un funcionamiento de HashTable

para tener las funciones de contenedor que se necesitan en el modelo del

mundo, y funciona como Documento DOM para soportar las transformaciones

XML de la capa de presentación.

Page 45: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 45

8.3.1 Diagrama de Clases

8.4 Capa de Presentación y Control

Esta es la capa que tiene la responsabilidad de interactuar con el cliente, es

decir, recibe las peticiones del cliente, decide cómo interactuar con el modelo

del mundo y presenta las salidas de respuesta a las peticiones. Esta capa va

dentro del Contenedor de Aplicaciones WEB.

Page 46: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 46

8.4.1 Diagrama de Clases

8.4.2 Funcionamiento de la capa de presentación y control

Como se mencionó en la arquitectura de alto nivel, se manejo un diseño MVC.

MVC es un patrón de diseño que separa la aplicación en tres módulos o

componentes: el modelo del mundo (persistencia y reglas del negocio), la

presentación que se encarga de desplegar los datos al usuario y un

componente de control que se encarga del manejo del flujo de información y de

requerimientos/respuestas desde y hacia el modelo del mundo.

Los principales beneficios del patrón MVC es que al separar en el diseño en 3

capas, disminuye el tamaño del desarrollo debido a que el código no se duplica.

Page 47: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 47

Este problema de duplicación del código es muy frecuente en aplicaciones web

y wap. Además centraliza el control de la aplicación lo que permite un

mantenimiento y ajuste del software más fácil.

El patrón MVC es uno de los patrones que mejor contribuyen a aplicaciones

como la desarrollada, donde se tienen múltiples clientes (en este caso

dispositivos móviles y browsers) debido a que no se debe duplicar el control

para cada tipo de cliente y lo único que debe ser desarrollado son las nuevas

vistas para el nuevo cliente.

La capa de control se encarga entonces de cuatro actividades: recibir e

interpretar los requerimientos, seleccionar qué método del modelo del mundo

usar y seleccionar y redireccionar a la siguiente vista.

Como parte de la implementación del patrón MVC en Java, se usa el modelo 2

de JSP. Este modelo consiste en la presencia de un servlet controlador que

centraliza la atención de los requerimientos, invoca los servicios requeridos en

el modelo del mundo y redirecciona la salida de este a la pagina jsp apropiada.

Para que el servlet controlador diferencie el tipo de operación se uso un servlet

mapping. Un servlet mapping permite direccionar varias direcciones o sufijos de

direcciones a un mismo servlet:

<servlet-mapping> <servlet-name>Controlador</servlet-name> <url-pattern>/login</url-pattern></servlet-mapping>

Cada vez que se llame la url de la aplicación, por ejemplo, tesismovil.no-

ip.com/login. El contenedor de aplicaciones redirecciona al servlet Controlador.

Page 48: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 48

Una vez se tengan los servlets mapping para cada tipo de redirección, se debe

establecer un método para identificar que url fue invocada y que tipo de acción

tomar en el modelo del mundo. Esto se puede lograr mediante condicionales

estilo IF. Sin embargo esto ocasiona que el servlet se vuelva demasiado largo e

incomprensible. Por esto se usa un mecanismo de acciones.

Una acción es una operación que se debe realizar ante el modelo del mundo.

La acción tiene un nombre, un método que realiza la interacción ante el modelo

y uno que determina la siguiente vista.

En la aplicación se tienen las siguientes acciones: AccionVerMensajes,

AccionVerContactos, AccionVerMensajes, AccionEnviarMensaje, AccionLogin y

AccionLogout.

El servlet controlador tiene una colección de tipo hashmap con las acciones que

tiene disponible la aplicación. Esta colección se indexa por el nombre de la

acción. Cuando viene un requerimiento se debe mirar la terminación de la url y

dependiendo de esta, obtener del hashmap el objeto acción indicado y llamar el

método manejar().

Luego de realizar la acción, y si no ocurre ninguna excepción el servlet le pide a

la acción la siguiente vista y hace la redirección.

Cada objeto que hereda de Accion posee dos urls distintas para redirección,

dependiendo del tipo de cliente (web o wap).

En el caso de la funcionalidad de ver contactos y ver mensajes, la jsp respectiva

se encarga de obtener el documento DOM, que el Controlador ha puesto en la

sesión después de llamar el método en el modelo del mundo, y dependiendo

del tipo de cliente aplicar el XSLT a este documento. De esta forma se genera

Page 49: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 49

el contenido dinámico independientemente del lenguaje que interpreta cada

cliente.

8.4.3 Diagrama de Secuencia

Page 50: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 50

9 HERRAMIENTAS DE DESARROLLO

Las siguientes son las herramientas y lenguajes usados para el desarrollo de la

aplicación:

9.1 Java 2 Standard Edition J2SE

Java 2 Standard Edition es un paquete de herramientas y utilidades

desarrollado por SUN Microsystems que permiten el desarrollo en lenguaje

JAVA. Java es un lenguaje de alto nivel en el cual se desarrollo el modelo del

mundo. Entre las principales características de JAVA y J2SE tenemos:

• Java independiente de la plataforma: Java es un lenguaje compilado

e interpretado al mismo tiempo. Al compilar un programa escrito en

JAVA se genera un archivo escrito en un lenguaje intermedio llamado

Bytecodes. Estos Bytecodes se pueden llevar a cualquier plataforma

o sistema operativo, donde la maquina virtual de java (Java VM) lo

interpreta.

• Java provee un API muy completo: El API de JAVA (Application

Programming Interface), provee de un conjunto de componentes y

paquetes de todo tipo para una programación fácil y de alto nivel.

Componentes para interfaz grafica, para comunicaciones, encripción,

manejo de streams, XML, estructuras de datos, etc.

• Permite desarrollar fácilmente aplicaciones stand-alone, clientes

servidor, y aplicaciones para Internet.

• Es orientado a objetos

Page 51: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 51

9.2 JavaDoc

JavaDoc es una herramienta contenida dentro de el paquete J2ME para

generar documentación de los API’s desarrollados en HTML. JavaDoc además

provee de lineamientos generales para documentación y codificación.

9.3 Servlets y Java Server Pages (JSP)

Servlets y Java Server Pages son tecnologías desarrolladas en el J2EE (Java 2

Enterprise Edition).

Servlets son programas hechos en Java que corren en el servidor y ayudan a

enriquecer el desarrollo web. Los servlets, al igual que JAVA, están pensados

para correr independientemente de la plataforma y del servidor Web. Los

servlets implementan una serie de interfaces para capturar y poder modelar los

mensajes http bajo el paradigma OO

Los servlets y las JSP tienen acceso a todo el API de Java y a librerías

específicas para el desarrollo web. Los servlets se utilizan mucho para

desarrollar los controladores.

Las Java Server Pages o JSPs son una extensión de la tecnología de Servlets,

que se asemeja a la programación de scripting del estilo ASP o PHP, es decir el

desarrollo embebido dentro de las paginas web. Este desarrollo a través de

páginas dinámicas permite un desarrollo web rápido y fácil de implementar. Las

paginas JSPs funcionan dentro del Contenedor de Aplicaciones Web como un

servlet y son usadas generalmente como vistas para ingresar datos o desplegar

información a los usuarios.

Page 52: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 52

9.4 Apache Tomcat

Apache Tomcat, es un contenedor de aplicaciones basadas en servlets y jsps.

Su uso es libre y se rige bajo la licencia de Apache. Para el desarrollo se usa el

Apache Tomcat 4.

Esta versión de Tomcat implementa las especificaciones de Servlet 2.3 y

JavaServerPages 1.2. Además de ser un contenedor de aplicaciones, sirve

también como servidor HTTP.

Apache Tomcat brinda una alternativa libre y muy completa a otros

Contenedores/Servidores Web como IBM WebSphere, Oracle IAS, Sun ONE

Web Server, BEA WebLogic, etc.

9.5 Apache Ant

Apache Ant es una herramienta basada en java que funciona de forma similar al

Make de Unix. Es decir, una forma de compilar, empaquetar, hacer deploy y

muchas otras tareas a través de scripting. La ventaja de Ant es que es

independiente de la plataforma y es extensible (se pueden especificar nuevas

tareas).2 Ant usa archivos de configuración XML para especificar las tareas a

realizar. Entre estas tareas encontramos: compresión, empaquetado de

aplicaciones en JAR/EAR/WAR, tareas de auditoria y pruebas, compilar y

realizar deploys y tareas para modificar el sistema de archivos.

9.6 UML y Power Designer

UML es un meta lenguaje de modelado de arquitecturas, que especifica y

visualiza los elementos de ésta. Este lenguaje usa un conjunto de elementos y

notaciones para modelar la parte estática, dinámica y el flujo de información en

la aplicación.

Page 53: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 53

UML especifica una gran variedad de diagramas para visualizar la arquitectura

de la aplicación. Los usados en el desarrollo de la aplicación fueron:

• Diagrama de Casos de Uso: El diagrama de casos de uso permite ver el

comportamiento del sistema desde el punto de vista del usuario final.

• Diagrama de Clases: El diagrama de clases permite visualizar el modelo

estático interno de la aplicación o sus componentes.

• Diagrama de Secuencias: El diagrama de secuencia permite visualizar

las interacciones necesarias (intercambio de mensajes) de los objetos

del modelo del mundo para poder llevar a cabo un determinado proceso,

a través del tiempo.

Power Designer es una herramienta que permite el modelado gráfico en UML

de la aplicación. Power Designer es desarrollado por Sybase Inc. Aparte de

proveer la herramienta de modelado, facilita otras actividades en el desarrollo

de la arquitectura de software, tales como diseño entidad/relación,

documentación y generación automática de código fuente.

9.7 Deck-It

Deck-It es una herramienta de libre distribución desarrollada por PyWeb que

emula las paginas WAP. Deck-it puede usarse con distintos look & feel de

teléfonos móviles. Deck-It interpreta el código WML, por lo que no es necesario

disponer de un Gateway de WAP o Toolkit que compile los WML.

2 Tomado del web site de Apache Ant

Page 54: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 54

10 RESULTADOS ALCANZADOS

• Estudio de antecedentes de la mensajería instantánea y la comunicación

móvil (ver numeral 4. Marco Teórico)

• Descripción del sistema de mensajería MSN (ver numeral 6.

Funcionamiento del sistema de mensajería MSN).

• Investigación sobre los protocolos y lenguajes que manejan los teléfonos

celulares.

• Desarrollo de software exitoso, que incluye las etapas de especificación y

diseño (ver numeral 7. Análisis de Requerimientos y 8. Diseño de la

arquitectura).

• Identificación de la problemática técnica de los teléfonos celulares como

dispositivos móviles (ver numeral 11. Limitaciones y Problemas

Encontrados).

• Se enriqueció la capacidad de conceptualización y desarrollo de

aplicaciones para WEB.

• Se identificaron posibles desarrollos futuros (ver Numeral 12. Posibles

desarrollos en el futuro).

Page 55: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 55

11 LIMITACIONES Y PROBLEMAS ENCONTRADOS

11.1 Mantenimiento de la sesión en la aplicación WAP

La sesión en una aplicación web representa una conexión a la aplicación o una

instancia de la aplicación. Cada usuario que ingresa a la aplicación tiene una

sesión independiente. Por cada sesión, el servidor o contenedor de aplicaciones

permite guardar diferentes objetos. Algunos ejemplos de objetos que se

guardan en sesión son objetos para mantener el estado del usuario o para

hacer tracking de acciones. La sesión es un concepto muy útil en las

aplicaciones web debido a que el protocolo http no contempla mecanismos para

mantener el estado del usuario o un historial de acciones.

El contenedor de aplicaciones distingue o separa cada sesión de usuario,

asignándole un identificador único de sesión o session ID. Para poder recuperar

la sesión, a medida que el usuario cambia de página, el contenedor de

aplicaciones automáticamente guarda un cookie con este id de sesión en la

máquina de cada usuario.

Como en los dispositivos celulares actuales no existe forma de guardar el

cookie, el mantenimiento de sesión no se puede hacer de esta forma. Esto

constituye un problema importante debido a que los objetos del modelo del

mundo de cada usuario se guardan en la sesión.

En el API de los servlets (J2EE API) existe un método del objeto Response

(encodeURL), que se encarga de decidir si un dispositivo acepta o no cookies.

Si no las acepta decide concatenar el url con el id de la sesión. Este último

método de llevar en la url el id de la sesión es el que se debe manejar en el

caso de la aplicación WAP.

Page 56: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 56

11.2 Restricciones de los dispositivos móviles

La funcionalidad que ofrece la aplicación se ve restringida por el tipo de

dispositivo y el ancho de banda que ofrece WAP. Aunque el servicio de

mensajería MSN ofrece transferencia de archivos, audio y video y envío de

noticias, la aplicación desarrollada debe ofrecer los servicios básicos de

mensajería, debido a las restricciones de visualización y forma de uso de los

celulares y al poco ancho de banda que ofrece WAP.

11.3 Interpretación de WML en dispositivos móviles

La visualización e interpretación de las páginas WML depende del tipo de

teléfono. Por ejemplo, la visualización de una tabla o un campo de texto varía

en cada celular. Otro ejemplo es que algunos teléfonos celulares reconocen

atributos de los tags y otros no (por ejemplo el atributo format en el tag input).

Page 57: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 57

12 POSIBLES DESARROLLOS EN EL FUTURO

12.1 Enriquecer la funcionalidad

La aplicación desarrollada ofrece los servicios básicos en la conectividad hacia

el servicio de mensajería MSN. Sin embargo se puede adicionar nuevas

funciones, como cambiar el nick name y manejar la lista de contactos. También

se puede pensar en ir añadiendo funcionalidades a medida que los teléfonos

celulares vayan evolucionando. Si en algún momento los celulares incorporaran

discos duros o si los protocolos de conexión a Internet aumentaran el ancho de

banda, se podría pensar en añadir transferencia de archivos o de audio.

El servicio de mensajería MSN, por su parte, también añade nuevos servicios

que van saliendo en cada versión del cliente o cuando se actualiza el protocolo.

Se debe tener en cuenta estos nuevos servicios para mantener la aplicación

actualizada o enriquecerla.

12.2 Incorporar nuevos servicios de mensajería

En el diseño del modelo del mundo se tuvo en cuenta la posibilidad de extender

la aplicación con otros servicios de mensajería (como AOL o Yahoo). Esta

inclusión de nuevos servicios daría mayor valor a la aplicación debido a que

normalmente las personas usan y tienen contactos en varios sistemas de

mensajería instantánea.

Page 58: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 58

12.3 Extender la capa de presentación

A medida que los celulares mejoren su forma de visualización o interacción, se

puede pensar en extender la capa de presentación. Hoy en día, por ejemplo,

algunos celulares están implementando lenguajes WML de última generación,

que permite visualización de colores, imágenes, etc.

12.4 Aprovechar el desarrollo de la aplicación como un framework

El desarrollo del modelo del mundo, constituye un framework de

interconectividad hacia el servicio de mensajería MSN. Este framework es

fácilmente extensible y usable como parte de distintas aplicaciones que

requieran interconexión con este servicio.

Un posible uso de este framework puede ser una aplicación que se ocupe del

soporte comercial a usuarios en un web site de comercio. Los usuarios hacen

preguntas desde el web site y el asesor comercial les contesta a ellos desde su

aplicación de mensajería como si estuviera hablando con un contacto.

Page 59: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 59

13 CONCLUSIONES

• Es posible desarrollar una aplicación que permita la interacción desde un

teléfono celular o desde la web con los sistemas de mensajería

instantánea, particularmente utilizando el sistema de mensajería MSN.

• El protocolo del sistema de mensajería MSN constituye un modelo

coherente y confiable para su uso en la aplicación desarrollada.

• Los requerimientos que se establecieron en el diseño de la aplicación

son: permitir ingresar y salir del sistema, enviar y recibir mensajes y ver

la lista de contactos, teniendo en cuenta que el uso de la aplicación se da

desde un teléfono celular.

• El uso del patrón MVC en la arquitectura de la aplicación, combinado con

el uso de XML y transformaciones XSL, permite ampliar y extender

fácilmente los tipos de cliente que accesan la aplicación.

• La metodología aplicada para desarrollar el software es suficiente y

puede además servir como instrumento de verificación de calidad de

procesos.

• El modelo del mundo constituye un framework que puede ser incluido o

reutilizado en aplicaciones que necesiten interconexión con el sistema de

mensajería MSN.

• Es posible dar un uso comercial a la aplicación. Teniendo en cuenta

propuestas que agreguen valor como enriquecer la aplicación con

nuevas funcionalidades del sistema de mensajería MSN, incorporar otros

sistemas de mensajería o efectuar un rediseño gráfico,

Page 60: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 60

14 BIBLIOGRAFIA

1. Rumbaugh James; Jacobson Ivar; Booch Grady. The Unified Modeling

Language Reference Manual. Addison-Wesley. 1999

2. Podosky William, Instant Messenger for Collaborative Learning

Environments. Trabajo de grado (Maestría en Ingeniería). University of

Florida 2001

3. Internet Draft: MSN Messenger Service 1.0 Protocol.

http://www.cs.berkeley.edu/~mikechen/im/protocols/msn/draft-movva-

msn-messenger-protocol-00.txt

4. MSN Instant Messenger Protocol: http://www.hypothetic.org/docs/msn/

5. The JAVA Tutorial: http://java.sun.com/docs/books/tutorial/

6. The J2EE Tutorial: http://java.sun.com/j2ee/tutorial/1_3-fcs/

7. MVC Pattern:

http://java.sun.com/blueprints/guidelines/designing_enterprise_applicatio

ns_2e/web-tier/web-tier5.html

8. Core J2EE Dispatcher View:

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DispatcherView.

html

9. JavaServer Pages Technology: http://java.sun.com/products/jsp/

10. Java Servlets Technology: http://java.sun.com/products/servlet/

11. Developing XML Solutions With Java Server Pages Technology:

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DispatcherView.

html

12. Java Platform Overview

http://developer.java.sun.com/developer/onlineTraining/new2java/overvie

w.html

13. Apache Tomcat: http://jakarta.apache.org/tomcat

14. Apache Ant: http://ant.apache.org/

15. Introducción a la Computación Móvil:

http://www.monografias.com/trabajos5/compumo/compumo.shtml

Page 61: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 61

16. WAP – Historia y Conceptos:

http://jlmnetwork.virtualave.net/Investigacion/Sin%20Flash/Wap/Historia/

17. Instant Messaging:

http://www.gslis.utexas.edu/~lis312le/restrict/im/im.html

18. How Instant Messaging Works:

http://www.gslis.utexas.edu/~lis312le/restrict/im/im.html

19. Arpa-Net the First Internet:

http://www.gslis.utexas.edu/~lis312le/restrict/im/im.html

20. The History of Internet: http://www.davesite.com/webstation/net-

history.shtml

Page 62: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 62

Anexo A. Tabla de Comandos del Protocolo MSN

Comando DescripciónACK Confirma el envío exitoso del mensajeADD Adiciona un contacto a las listas de contacto o bloqueosANS Acepta el ingreso o invitación a una sesiónBLP Cambia las opciones de privacidad del usuarioBYE Notifica que un usuario abandona una sesiónCAL Invita a un usuario a una sesiónCHG Envía una solicitud de cambio de estadoFLN Notifica cuando un contacto se desconectaGTC Cambia las opciones de privacidad del usuarioINF Solicita al servidor sobre los métodos de autenticación soportadosILN Comando que notifica el estado de un contacto cuando el usuario

ingresaIRO Informa sobre los contactos que están en una sesión al ingresar a

ellaJOI Notifica que un contacto ha aceptado la invitación a ingresar a la

sesiónLST Devuelve la información de las listas de contactos y bloqueos del

servidorMSG Envía un mensaje en una sesiónNAK Indica que el envío del mensaje ha falladoNLN Notifica un cambio de estado de un contactoOUT Desconecta al usuario de una sesiónREM Remueve un contacto de las listas de contactos o bloqueosRNG Notifica sobre invitaciones para ingresar a una sesiónSYN Solicita sincronizar las listas de contactos y bloqueos con el servidorUSR Comando usado para realizar los pasos de autenticación ante el

servidorVER Negocia la versión del protocolo que se va a usarXFR Indica la dirección del notification server asignada por el dispatch

server o indica la dirección de un switchboard session

Page 63: DESARROLLO DE UNA APLICACIÓN PARA LA CONECTIVIDAD …

ISC-2003-1-10 63

Anexo B. Estados de los Usuarios en el Protocolo de Mensajería MSN

Los estados se codifican en una cadena de tres caracteres. Los estados son:

NLN: Este estado se usa cuando el usuario ingresa a la aplicación. Elcambiarse a este estado ocasiona un aviso o alerta a todos sus contactos. Susignificado es “En Línea”

FLN: Este estado se usa para salir de la aplicación. Su significado es“Desconectado”

HDN: Este estado se usa para hacer invisible al usuario para sus contactos.Aunque en este estado el usuario no puede enviar y recibir mensajes si recibenotificaciones de ingreso/salida de sus contactos.

BSY: Representa el estado “Ocupado”

IDL: Representa el estado “Inactivo”

BRB: Representa el estado “Vuelvo en seguida”

AWY: Representa el estado “Ausente”

PHN: Representa el estado “En el teléfono”

LUN: Representa el estado “Salí a comer”