O projeto Real-Time Chat é uma aplicação composta por dois serviços principais: User Service e Chat Service. Ele permite que usuários se registrem, façam login e participem de salas de bate-papo em tempo real utilizando WebSockets. A autenticação é baseada em JWT (JSON Web Token), garantindo segurança nas comunicações.
- Registro de usuários com validação de dados.
- Login de usuários com geração de token JWT.
- Autenticação de usuários para acesso a recursos protegidos.
- Comunicação em tempo real via WebSockets.
- Envio de mensagens públicas e privadas.
- Gerenciamento de conexões WebSocket (entrada e saída de usuários).
O User Service é responsável pela autenticação e gerenciamento de usuários. Ele fornece endpoints para registro, login e consulta de informações do usuário autenticado.
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /register |
Registra um novo usuário. |
| POST | /login |
Realiza login e retorna um token JWT. |
| GET | /me |
Retorna informações do usuário logado. |
- Spring Boot Starter Web
- Spring Boot Starter Security
- Spring Boot Starter Data JPA
- Spring Boot Starter Validation
- PostgreSQL Driver
- JJWT (JSON Web Token)
O Chat Service é responsável pela comunicação em tempo real entre os usuários. Ele utiliza WebSockets para permitir o envio de mensagens públicas e privadas.
| Método | Endpoint | Descrição |
|---|---|---|
| WS | /ws-chat |
Endpoint WebSocket para comunicação. |
| STOMP | /app/chat.sendMessage |
Envia uma mensagem pública. |
| STOMP | /app/chat.addUser |
Adiciona um usuário à sala. |
| STOMP | /app/chat.sendPrivateMessage |
Envia mensagem privada. |
- Spring Boot Starter Web
- Spring Boot Starter WebSocket
- Spring Boot Starter JSON
- Java 21 ou superior.
- Maven 3.9.9 ou superior.
- PostgreSQL configurado com as credenciais:
- Usuário:
seuUsuario - Senha:
suaSenha - Banco de dados:
chat_db
- Usuário:
- Clone o repositório:
git clone <link> cd Quick-Chat-using-WebSockets
- Crie um arquivo
.envna raíz do projeto como o arquivo.env.exemple. - Configure o banco de dados PostgreSQL:
- Crie o banco de dados chat_db.
- Certifique-se de que as credenciais no arquivo
.envestão corretas.
- Compile e execute os serviços:
- User Service:
cd user-service ./mvnw spring-boot:run - Chat Service:
cd user-service ./mvnw spring-boot:run
- Acesse os serviços:
- Chat Service: http://localhost:8080
- User Service: http://localhost:8081
real-time-chat/
├── .env
├── README.md
├── .vscode/
│ ├── launch.json
│ └── settings.json
├── chat-service/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/alex/chat_service/
│ │ │ ├── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── static/chat.html
│ │ └── test/
│ ├── pom.xml
│ └── .mvn/
├── user-service/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/alex/user_service/
│ │ │ ├── resources/
│ │ │ │ ├── application.properties
│ │ │ │ └── static/index.html
│ │ └── test/
│ ├── pom.xml
│ └── .mvn/O frontend está disponível nos arquivo HTML localizado na pasta static do serviço de chat.