Sobre el proyecto
OwnChat es una aplicación de chat de escritorio autoalojada para usuarios que desean control sobre su comunicación. Sigue una arquitectura cliente-servidor-cliente, donde múltiples clientes de escritorio se conectan a un servidor central que retransmite mensajes en tiempo real. La aplicación está construida con Java Swing para la interfaz de usuario, Java Sockets para la red y Oracle Database para almacenamiento persistente.
Las características clave incluyen:
- **Creación de cuentas e inicio de sesión**: Las credenciales de usuario se almacenan en la tabla `USER_DETAILS` y se validan durante el inicio de sesión.
- **Gestión de contactos**: Los usuarios pueden agregar contactos, ver su lista de contactos y verificar si un contacto está en línea antes de iniciar un chat.
- **Mensajería en tiempo real**: Cada cliente conectado registra un socket con el servidor; los mensajes se retransmiten en vivo al destinatario si tiene una ventana de chat abierta. Todos los mensajes se registran en `CHAT_HISTORY`.
- **Historial de chat**: Reabrir un chat con un contacto reproduce mensajes anteriores, codificados por color según el remitente, con encabezados de fecha/hora.
- **Temas**: Los usuarios pueden elegir entre apariencias Metal, Oscura y Clara. El tema seleccionado se guarda por usuario en la tabla `SETTINGS` y se aplica automáticamente al iniciar sesión.
- **Seguimiento de estado en línea/desconectado**: El servidor actualiza `LOG_STATUS` cada vez que un usuario abre/cierra la lista de contactos o inicia/cierra sesión, incluyendo un gancho de cierre automático de sesión al cerrar la ventana.
- **IP de servidor configurable**: Los clientes pueden apuntar a cualquier host de servidor mediante una pantalla de configuración simple.
- **Pantalla Acerca de**: Muestra información del desarrollador y de la marca.
El proyecto está estructurado en tres partes principales: la aplicación cliente, el servidor y el esquema de base de datos. El cliente consiste en múltiples clases Java para diferentes pantallas (bienvenida, inicio de sesión, crear cuenta, configuración, contactos, ventana de chat, etc.). El servidor es multiproceso, manejando cada conexión de cliente en un hilo separado, y usa un `ConcurrentHashMap` para rastrear clientes conectados para la retransmisión de mensajes. El esquema de base de datos incluye tablas para usuarios, configuraciones, estado de inicio de sesión, contactos e historial de chat, con disparadores para sembrar automáticamente configuraciones predeterminadas y estado inicial de desconexión para nuevos usuarios.
La configuración implica construir la base de datos Oracle ejecutando el script SQL proporcionado, luego ejecutar el ejecutable del servidor (OwnChatS-Portable.zip) e ingresar las credenciales de la base de datos, y finalmente ejecutar el ejecutable del cliente (OwnChat-Portable.zip), configurar la IP del servidor, crear una cuenta y chatear. La hoja de ruta menciona una futura versión basada en web usando Servlets, JSP, J2EE y Spring Boot con un frontend HTML/CSS/Bootstrap.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.