SkillAgentSearch skills...

CodeChat

No description available

Install / Use

/learn @xDGxx/CodeChat
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

💬 CodeChat - Projeto Live Chat com Spring Boot & AWS

Seja bem-vindo ao CodeChat, um projeto de chat ao vivo desenvolvido com tecnologias modernas de backend e frontend, incluindo WebSocket com STOMP para comunicação bidirecional em tempo real.


🚀 Tecnologias Utilizadas

<a href="https://www.java.com/pt-BR/"><img src="https://skillicons.dev/icons?i=java" alt="Java" height="40"/></a> <img src="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/spring/spring-original.svg" height="40"/> <img src="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/amazonwebservices/amazonwebservices-original-wordmark.svg" height="40"/> <img src="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/javascript/javascript-original.svg" height="40"/> <img src="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/jquery/jquery-original.svg" height="40"/> <img src="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/html5/html5-original.svg" height="40"/> <img src="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/css3/css3-original.svg" height="40"/>


🌐 Acesso ao Projeto

O projeto está hospedado na AWS Elastic Beanstalk, rodando em uma instância EC2.

🔗 Acesse agora: http://diogoalmeida-livechat.sa-east-1.elasticbeanstalk.com/

⚠️ Atenção: Em dispositivos móveis, utilize o navegador sem HTTPS. Navegadores modernos bloqueiam WebSockets via http por padrão em conexões seguras (https).


🛠️ Estrutura do Projeto

📁 Frontend

Está localizado na pasta static/ do projeto Spring Boot e contém:

  • HTML, CSS, JavaScript
  • jQuery
  • STOMP.js para WebSocket

☕ Backend

WebSocketConfig.java

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topics");
        registry.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/diogoalmeida-livechat-websocket");
    }
}

LiveChatController.java

@Controller
public class LiveChatController {

    @MessageMapping("/new-message")
    @SendTo("/topics/livechat")
    public ChatOutPut newMessage(ChatInput input) {
        return new ChatOutPut(HtmlUtils.htmlEscape(input.user() + ": " + input.message()));
    }
}

ChatInput.java

public record ChatInput(String user, String message) {}

ChatOutPut.java

public record ChatOutPut(String content) {}

LivechatmsApplication.java

@SpringBootApplication
public class LivechatmsApplication {

    public static void main(String[] args) {
        SpringApplication.run(LivechatmsApplication.class, args);
    }
}

💻 Como Rodar

▶️ Passo a Passo

  1. Inserir o nome de usuário
  2. Clicar em Connect
  3. Digitar a mensagem e clicar em Send
  4. ✅ Pronto! Você está conectado ao live chat.
  5. Quando desejar sair, clique em Desconnect

🔄 Funcionamento Interno

📡 Conexão WebSocket

  • Ao clicar em Connect, o navegador envia um STOMP FRAME para o endpoint WebSocket.
  • A conexão bidirecional é estabelecida com a API.

📬 Inscrição no Tópico

  • O navegador envia um frame do tipo SUBSCRIBE para o tópico /topics/livechat.
  • A API reconhece e associa o cliente ao tópico.

✉️ Envio de Mensagens

  • O navegador envia um SEND FRAME com a mensagem para /app/new-message.
  • A API publica a mensagem no tópico /topics/livechat.

🖥️ Renderização

  • O navegador, inscrito no tópico, recebe a nova mensagem e a renderiza instantaneamente na interface.

☁️ Deploy com Maven + AWS

  • A aplicação foi empacotada via Maven, gerando um .jar dentro de /target
  • Esse .jar foi utilizado para deploy na AWS Elastic Beanstalk, com instância EC2

🧠 Sobre o STOMP

STOMP (Streaming Text Oriented Messaging Protocol) é um protocolo de mensageria simples e baseado em texto.
Neste projeto, é utilizado um broker em memória via Spring Boot para gerenciar os tópicos de mensagens.


👨‍💻 Autor

Diogo Almeida
Desenvolvedor Backend | Spring Boot | AWS | WebSocket

📫 Em caso de dúvidas, sugestões ou contribuições, sinta-se à vontade para entrar em contato.

View on GitHub
GitHub Stars5
CategoryDevelopment
Updated10mo ago
Forks0

Languages

CSS

Security Score

57/100

Audited on Jun 5, 2025

No findings