Este projeto tem como objetivo implementar um sistema distribuído de monitoramento climático em tempo real utilizando o protocolo WebSocket com STOMP, permitindo que o servidor envie dados automaticamente para múltiplos clientes sem a necessidade de requisições contínuas (polling).
- Java 17+
- Spring Boot
- WebSocket
- STOMP (Simple Text Oriented Messaging Protocol)
- SockJS
- API Open-Meteo (dados climáticos)
- HTML, CSS e JavaScript
- Comunicação bidirecional (Full-Duplex)
- Push de dados em tempo real
- Programação orientada a eventos
- Arquitetura cliente-servidor
- Sistemas distribuídos
- Configuração de WebSocket com STOMP e SockJS
- Uso de
@Scheduledpara envio periódico de dados - Seleção aleatória de cidades
- Consumo de API externa de clima
- Envio de mensagens para o tópico:
/topic/clima
- Conexão via SockJS + STOMP
- Inscrição no tópico
/topic/clima - Atualização dinâmica da interface
- Exibição em tempo real dos dados recebidos
-
Cliente se conecta ao endpoint WebSocket
/clima-websocket -
Servidor mantém conexão aberta
-
A cada 5 segundos:
- Seleciona uma cidade aleatória
- Consulta API de clima
- Envia dados para
/topic/clima
-
Clientes inscritos recebem automaticamente os dados
{
"cidade": "Rio de Janeiro",
"temperatura": 35.8,
"descricao": "Clima atual",
"horario": "13:28:09"
}A interface apresenta:
-
Status da conexão (Conectado/Desconectado)
-
Lista de cidades atualizadas em tempo real
-
Cores dinâmicas:
- 🔴 Vermelho → Temperatura alta
- 🔵 Azul → Temperatura mais baixa
git clone https://github.com/seu-usuario/seu-repositorio.git
- File → Open → selecionar o projeto
Rodar a classe:
ClimaWebsocketApplication.java
http://localhost:8080
src/main/java/
├── config
├── model
├── service
├── scheduler
- Cristian Martins Fernandes
O sistema demonstra com sucesso a utilização de WebSockets para envio de dados em tempo real, eliminando a necessidade de polling e melhorando a eficiência da comunicação entre cliente e servidor.
