Você já se perguntou como a comunicação em tempo real em aplicativos funciona? Você sabe, aquelas notificações instantâneas, chats ao vivo e atualizações em tempo real? Bem, tudo isso é graças aos WebSockets. E quando combinado com o Spring Boot, você tem uma ferramenta poderosa para criar aplicativos web interativos. Hoje, vamos mergulhar fundo no mundo do Spring Boot WebSocket. Ao final deste post, você terá uma compreensão sólida de como implementar e utilizar WebSockets em seus aplicativos Spring Boot. Também vamos abordar a integração com ferramentas como Apidog para otimizar a gestão da sua API.
O que é WebSocket?
WebSocket é um protocolo de comunicação que fornece canais de comunicação duplex total sobre uma única conexão TCP. Ao contrário das requisições HTTP tradicionais, que são half-duplex, o WebSocket permite uma conexão persistente entre o cliente e o servidor. Isso significa que ambos podem enviar e receber mensagens independentemente, tornando-o ideal para aplicações em tempo real.

Por que usar Spring Boot com WebSocket?
O Spring Boot simplifica o desenvolvimento de aplicativos Spring autônomos e de nível de produção. Ele reduz a quantidade de código repetitivo e fornece suporte pronto para uso para WebSockets. Combinando Spring Boot com WebSocket, os desenvolvedores podem criar aplicações em tempo real escaláveis, manuteníveis e eficientes com configuração mínima.

Começando com Spring Boot WebSocket
Vamos começar a configurar um aplicativo Spring Boot com suporte a WebSocket. Começaremos do zero e construiremos um aplicativo de chat simples.
Passo 1: Configure seu projeto Spring Boot
Primeiro, crie um novo projeto Spring Boot. Você pode usar Spring Initializr para isso. Selecione as seguintes dependências:
- Spring Web
- WebSocket
Gere o projeto e descompacte o arquivo baixado. Abra-o em seu IDE favorito.

Passo 2: Configure o WebSocket no Spring Boot
Agora, precisamos configurar o WebSocket em nossa aplicação Spring Boot. Crie uma nova classe de configuração:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chat").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
}
Nesta configuração, habilitamos o broker de mensagens WebSocket e definimos um endpoint /chat
que os clientes usarão para se conectar. O método withSockJS()
permite opções de fallback do SockJS para navegadores que não suportam WebSocket.
Passo 3: Crie um Modelo de Mensagem
Em seguida, precisamos de um modelo para representar nossas mensagens de chat. Crie um POJO simples:
public class ChatMessage {
private String content;
private String sender;
// Getters and setters
}
Passo 4: Crie um Controlador de Mensagem
Precisamos de um controlador para lidar com mensagens WebSocket recebidas. Crie uma nova classe de controlador:
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;
@Controller
public class ChatController {
@MessageMapping("/sendMessage")
@SendTo("/topic/messages")
public ChatMessage sendMessage(ChatMessage chatMessage) {
return chatMessage;
}
}
Neste controlador, mapeamos mensagens recebidas enviadas para /app/sendMessage
e as transmitimos a todos os assinantes de /topic/messages
.
Passo 5: Crie um Frontend para Testar WebSocket
Para testar nossa configuração de WebSocket, vamos criar uma página HTML simples. Coloque este arquivo no diretório src/main/resources/static
e nomeie-o como index.html
:
<!DOCTYPE html>
<html>
<head>
<title>Chat Spring Boot WebSocket</title>
<script src="https://cdn.jsdelivr.net/npm/sockjs-client@1.5.0/dist/sockjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/stompjs@2.3.3/lib/stomp.min.js"></script>
</head>
<body>
<h1>Chat Spring Boot WebSocket</h1>
<div>
<input type="text" id="sender" placeholder="Seu nome">
<input type="text" id="message" placeholder="Mensagem">
<button onclick="sendMessage()">Enviar</button>
</div>
<div id="messages"></div>
<script>
var stompClient = null;
function connect() {
var socket = new SockJS('/chat');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
console.log('Conectado: ' + frame);
stompClient.subscribe('/topic/messages', function (chatMessage) {
showMessage(JSON.parse(chatMessage.body));
});
});
}
function sendMessage() {
var sender = document.getElementById('sender').value;
var message = document.getElementById('message').value;
stompClient.send("/app/sendMessage", {}, JSON.stringify({'sender': sender, 'content': message}));
}
function showMessage(message) {
var messages = document.getElementById('messages');
var messageElement = document.createElement('div');
messageElement.appendChild(document.createTextNode(message.sender + ": " + message.content));
messages.appendChild(messageElement);
}
window.onload = connect;
</script>
</body>
</html>
Este simples arquivo HTML inclui um formulário para inserir mensagens e um div para exibi-las. Ele usa SockJS e STOMP para gerenciar a comunicação WebSocket.
Passo 6: Execute a Aplicação
Execute sua aplicação Spring Boot e abra http://localhost:8080
em seu navegador. Abra a mesma URL em várias abas para ver o chat em tempo real em ação.
Depurando Springboot WebSockets com Apidog
Apidog é uma ferramenta fantástica para documentação e teste de APIs. Ela simplifica o processo de documentação e teste de suas APIs WebSocket Spring Boot. Fornece uma interface amigável para estabelecer conexões WebSocket, enviar e receber mensagens, e documentar APIs.
Aqui está como você pode usar o Apidog para depurar um cliente WebSocket:
- Abrir Apidog: Primeiro, inicie o aplicativo Apidog e clique no botão "+" no lado esquerdo. Um novo menu suspenso será aberto. De lá, escolha "Nova API WebSocket":

2. Estabelecer uma Conexão: Comece inserindo a URL da API WebSocket na barra de endereços do Apidog. Você pode então clicar no botão “Conectar” para iniciar o processo de handshake e estabelecer uma conexão. O Apidog permite que você personalize parâmetros como Params, Headers e Cookies durante o handshake.

3. Enviar e Receber Mensagens: Uma vez que a conexão é estabelecida, você pode enviar mensagens na aba "Mensagem". Você pode escrever texto, JSON, XML, HTML e outras mensagens em formato de texto, bem como mensagens em formato binário usando Base64 ou Hexadecimal. A nova visualização em linha do Apidog mostra o status da conexão, mensagens enviadas e recebidas em ordem cronológica. Quando você clica em uma mensagem, pode visualizar facilmente seus detalhes.

4. Documentação da API: O Apidog herda sua robusta funcionalidade de documentação de APIs para APIs WebSocket, permitindo documentar suas interações WebSocket de forma eficaz.

Lembre-se de verificar problemas comuns de WebSocket, como problemas de conexão, erros de formato de mensagem e preocupações com segurança durante seu processo de depuração.
Conclusão
Neste post, exploramos como configurar um aplicativo de chat em tempo real usando Spring Boot WebSocket. Começamos configurando o WebSocket em um projeto Spring Boot, criamos um aplicativo de chat simples e o integramos com o Apidog para melhor gerenciamento da API. Com WebSockets e Spring Boot, você pode construir aplicações em tempo real eficientes que fornecem uma experiência de usuário tranquila. Ao aproveitar ferramentas como o Apidog, você pode aprimorar seu fluxo de trabalho de desenvolvimento, garantindo que suas APIs sejam bem documentadas, testadas e monitoradas.
A comunicação em tempo real é um divisor de águas para aplicações web modernas. Seja para chat ao vivo, notificações ou ferramentas colaborativas, dominar o WebSocket com Spring Boot abre um mundo de possibilidades.