Este é um projeto de chat em tempo real desenvolvido em Java puro, utilizando Sockets para comunicação e uma arquitetura baseada em exchanges e channels. O sistema permite a criação de grupos, conversas privadas e salas de bate-papo. Tudo isso acessado via linha de comando (CLI).
- 🔌 Conexão e desconexão via CLI
- 🧑🤝🧑 Suporte a conversas privadas e em grupo
- 🧱 Criação e gerenciamento de canais de troca (channels) e exchanges
- 🏷️ Associação dinâmica de clientes a canais
- 🛑 Encerramento de conexão com o servidor via comandos
- ⚙️ Arquitetura flexível para expansão futura
- Java 21+ - linguagem
- Java Sockets (
java.net.ServerSocket
,Socket
) - Threads - controle simultâneo de clientes
- ConcurrentMap - Coleções sincronizadas
- Mockito - mocks de objetos
- Junit5 - testes unitários
- SLF4J e Logback - escritas de logs eficiente e estruturada
- Exchange: Gerencia a distribuição de mensagens entre diferentes canais
- Channel: Representa uma sala de conversa (pública ou privada)
- ClientHandler: Cada cliente conectado roda em uma thread separada
- CLI: Interface textual para entrada de comandos do usuário
- Java 21+ instalado
- Maven instalado
- 🛠️ Gerar os JARs do servidor e do cliente:
mvn clean package
- 🚀 Executar o servidor:
java -jar target/chat-server.jar
- 💬 Executar o cliente:
java -jar target/chat-client.jar