Epitalk — Aplicación de chat IRC en tiempo real con Mercure y SSE logo

Epitalk — Aplicación de chat IRC en tiempo real con Mercure y SSE

Aplicación de chat en tiempo real inspirada en el protocolo IRC, que permite discutir en salones públicos o privados directamente desde el navegador, con actualizaciones instantáneas mediante Mercure y Server-Sent Events (SSE).

Ver el sitio

Descripción del proyecto

Contexto

Epitalk es una aplicación de chat inspirada en el funcionamiento de los servidores IRC clásicos, que permite a los usuarios comunicarse en tiempo real en salones públicos o mediante mensajes privados.

El proyecto fue desarrollado como parte de un trabajo académico en Epitech, con el objetivo de diseñar una aplicación de mensajería en tiempo real completa y accesible directamente desde un navegador.

En lugar de utilizar WebSockets, como en la mayoría de las aplicaciones de chat modernas, la aplicación emplea Mercure y Server-Sent Events (SSE) para explorar otro enfoque en la gestión de comunicaciones en tiempo real entre el servidor y los clientes.

La aplicación está completamente funcional y es accesible públicamente: los usuarios solo deben elegir un seudónimo para unirse al chat de inmediato.

Problema

Crear una aplicación de mensajería en tiempo real implica varios desafíos técnicos:

  • Sincronizar los mensajes entre múltiples usuarios y dispositivos
  • Gestionar la creación y administración de salones de discusión
  • Mantener el estado de los usuarios conectados
  • Transmitir eventos sin recargar la página

Las soluciones clásicas suelen utilizar WebSockets, pero existen otras arquitecturas para gestionar flujos en tiempo real.

El objetivo del proyecto era, por tanto, diseñar una aplicación de chat moderna mientras se experimentaba con una arquitectura basada en Mercure y Server-Sent Events.

Solución

Epitalk se basa en una arquitectura en tiempo real que combina un backend en AdonisJS y el protocolo Mercure para difundir eventos hacia los clientes.

Los clientes se conectan a un flujo SSE que permite recibir actualizaciones instantáneas del servidor: nuevos mensajes, llegada de usuarios, creación de salones o cambios de estado.

La interfaz frontend está desarrollada con Vue 3 y TypeScript, con gestión de estado mediante Pinia, lo que permite ofrecer una interfaz fluida similar a las aplicaciones de chat modernas.

El usuario solo debe introducir un seudónimo para unirse al servidor e iniciar la conversación al instante.

Funcionalidades principales

  • Conexión instantánea al chat mediante seudónimo
  • Salones de discusión públicos (channels)
  • Mensajería privada entre usuarios
  • Creación y eliminación de channels
  • Lista de usuarios conectados en un salón
  • Comandos IRC clásicos (/join, /list, /users, /nick, /create, /delete, /msg, /leave)
  • Bot integrado para responder comandos
  • Actualización en tiempo real de mensajes y eventos
  • Detección de usuarios en línea
  • Interfaz responsive compatible con móviles y escritorio

Resultados

Epitalk demuestra la implementación de una aplicación de chat en tiempo real completa utilizando una arquitectura basada en Mercure y Server-Sent Events.

El proyecto destaca:

  • La gestión de eventos en tiempo real en el lado del cliente y el servidor
  • La sincronización instantánea de datos entre múltiples usuarios
  • El diseño de una interfaz de chat moderna con Vue.js

Además, constituye una demostración de una arquitectura alternativa a los WebSockets para aplicaciones que requieren actualizaciones en tiempo real.

Entorno de desarrollo

Vue.jsVue.js
TypeScriptTypeScript
PiniaPinia
SassSCSS
AdonisJSAdonisJS
MariaDBMariaDB
DockerDocker

¿Tienes un proyecto similar? Hablemos

¿Buscas un desarrollador freelance para concretar tu idea? Hablemos de tu proyecto web, móvil o software.

Contactarme