Bibliotecas WebSocket Java: Guia Completo para Implementação em Tempo Real

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Bibliotecas WebSocket Java: Guia Completo para Desenvolvimento de Aplicações em Tempo Real

WebSocket é um protocolo que permite comunicação bidirecional entre cliente e servidor através de uma única conexão TCP de longa duração. Em Java, existem várias bibliotecas maduras que simplificam o trabalho com WebSocket. Neste artigo, abordaremos as principais bibliotecas, seus recursos e forneceremos exemplos práticos de código.



1. Java WebSocket API (JSR 356)

API padrão para trabalhar com WebSocket em Java EE / Jakarta EE. Faz parte dos servidores de aplicação (WildFly, TomEE, GlassFish) e permite criar endpoints tanto do lado do servidor quanto do cliente.

Principais recursos:

  • Anotações @ServerEndpoint e @ClientEndpoint
  • Suporte a mensagens de texto e binárias
  • Gerenciamento de sessões e ciclo de vida
  • Integração com CDI (Contexts and Dependency Injection)

Exemplo de endpoint do servidor:

import javax.websocket.*;import javax.websocket.server.ServerEndpoint;import java.io.IOException;

@ServerEndpoint("/chat")public class ChatEndpoint {

@OnOpen public void onOpen(Session session) { System.out.println("Nova conexão: " + session.getId()); session.getUserProperties().put("username", "Convidado"); }

@OnMessage public String onMessage(String message, Session session) { String username = (String) session.getUserProperties().get("username"); return username + ": " + message; }

@OnClose public void onClose(Session session, CloseReason reason) { System.out.println("Conexão fechada: " + reason.getReasonPhrase()); }

@OnError public void onError(Session session, Throwable error) { error.printStackTrace(); }}

Exemplo de cliente:

import javax.websocket.*;import java.net.URI;

@ClientEndpointpublic class ChatClient {

private Session session;

@OnOpen public void onOpen(Session session) { System.out.println("Conectado ao servidor"); this.session = session; }

@OnMessage public void onMessage(String message) { System.out.println("Recebido: " + message); }

public void sendMessage(String message) throws IOException { if (session != null && session.isOpen()) { session.getBasicRemote().sendText(message); } }

public static void main(String[] args) throws Exception { WebSocketContainer container = ContainerProvider.getWebSocketContainer(); ChatClient client = new ChatClient(); container.connectToServer(client, new URI("ws://localhost:8080/chat")); client.sendMessage("Olá, mundo!"); Thread.sleep(1000); }}


2. Tyrus (Implementação de Referência)

Tyrus é a implementação de referência do JSR 356 da Oracle. Pode ser usada como biblioteca standalone sem um servidor de aplicação completo. Ideal para microsserviços e aplicações leves.

Características:

  • Funciona com Grizzly, Jetty ou servidor HTTP JDK
  • Suporte a SockJS para compatibilidade com navegadores sem WebSocket
  • Filtros e interceptadores configuráveis
  • Configuração flexível via XML ou Java Config

Exemplo de servidor standalone com Tyrus + Grizzly:

import org.glassfish.tyrus.server.Server;import javax.websocket.*;import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/echo")public class EchoEndpoint {

@OnMessage public String echo(String message) { return "Eco: " + message; }

public static void main(String[] args) { Server server = new Server("localhost", 8025, "/ws", EchoEndpoint.class); try {

Recommendations