Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monitoramento de Temperatura em Tempo Real com WebSockets

Objetivo

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).


Tecnologias Utilizadas

  • Java 17+
  • Spring Boot
  • WebSocket
  • STOMP (Simple Text Oriented Messaging Protocol)
  • SockJS
  • API Open-Meteo (dados climáticos)
  • HTML, CSS e JavaScript

Conceitos Aplicados

  • Comunicação bidirecional (Full-Duplex)
  • Push de dados em tempo real
  • Programação orientada a eventos
  • Arquitetura cliente-servidor
  • Sistemas distribuídos

Arquitetura do Sistema

Servidor (Spring Boot)

  • Configuração de WebSocket com STOMP e SockJS
  • Uso de @Scheduled para 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

Cliente (Web)

  • 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

Fluxo de Comunicação

  1. Cliente se conecta ao endpoint WebSocket /clima-websocket

  2. Servidor mantém conexão aberta

  3. A cada 5 segundos:

    • Seleciona uma cidade aleatória
    • Consulta API de clima
    • Envia dados para /topic/clima
  4. Clientes inscritos recebem automaticamente os dados


Exemplo de Mensagem (JSON)

{
  "cidade": "Rio de Janeiro",
  "temperatura": 35.8,
  "descricao": "Clima atual",
  "horario": "13:28:09"
}

Interface do Sistema

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

Como Executar o Projeto

1. Clonar o repositório

git clone https://github.com/seu-usuario/seu-repositorio.git

2. Abrir no IntelliJ

  • File → Open → selecionar o projeto

3. Executar aplicação

Rodar a classe:

ClimaWebsocketApplication.java

4. Acessar no navegador

http://localhost:8080

Demonstração

Demonstração do sistema


Estrutura do Projeto

src/main/java/
 ├── config
 ├── model
 ├── service
 ├── scheduler

Autor

  • Cristian Martins Fernandes

Conclusão

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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages