CodeChat
No description available
Install / Use
/learn @xDGxx/CodeChatREADME
💬 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
- Inserir o nome de usuário
- Clicar em
Connect - Digitar a mensagem e clicar em
Send - ✅ Pronto! Você está conectado ao live chat.
- 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
.jardentro de/target - Esse
.jarfoi 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.
