WebSocket en Java: biblioteca Java-WebSocket para tiempo real

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

WebSocket en Java: biblioteca Java-WebSocket



En el desarrollo web moderno, la necesidad de comunicación bidireccional en tiempo real es cada vez más relevante. Aplicaciones de chat, juegos en línea, cotizaciones bursátiles, notificaciones: todo esto requiere una transmisión instantánea de datos entre el cliente y el servidor. Para Java, una de las implementaciones más populares y confiables del protocolo WebSocket es la biblioteca Java-WebSocket (también conocida como nv-websocket-client).



En este artículo, analizaremos en detalle cómo usar Java-WebSocket para crear aplicaciones de servidor y cliente, proporcionaremos ejemplos de código y revisaremos las mejores prácticas.



¿Qué es Java-WebSocket?



Java-WebSocket es una biblioteca ligera y potente de código abierto que implementa el protocolo WebSocket (RFC 6455). Permite a los desarrolladores de Java crear fácilmente tanto servidores WebSocket como clientes WebSocket sin necesidad de profundizar en los detalles de bajo nivel del protocolo.



Características principales de la biblioteca:

  • Soporte completo para el lado del servidor y del cliente de WebSocket.
  • Soporte para WSS (WebSocket Secure) mediante SSL/TLS.
  • Reconexión automática en caso de desconexión.
  • Manejo de mensajes fragmentados.
  • Soporte para extensiones personalizadas.
  • API simple basada en eventos (onOpen, onMessage, onClose, onError).


Instalación y configuración



Para usar la biblioteca, agregue la dependencia a su archivo pom.xml (Maven):



<dependency>    <groupId>org.java-websocket</groupId>    <artifactId>Java-WebSocket</artifactId>    <version>1.5.4</version></dependency>


Si usa Gradle:



implementation 'org.java-websocket:Java-WebSocket:1.5.4'


Creación de un servidor WebSocket



Veamos un ejemplo simple de un servidor WebSocket que recibe mensajes y los envía de vuelta a todos los clientes conectados (servidor eco):



import org.java_websocket.WebSocket;import org.java_websocket.handshake.ClientHandshake;import org.java_websocket.server.WebSocketServer;import java.net.InetSocketAddress;import java.util.Set;

public class EchoServer extends WebSocketServer {

public EchoServer(int port) { super(new InetSocketAddress(port)); }

@Override public void onOpen(WebSocket conn, ClientHandshake handshake) { System.out.println("Nueva conexión: " + conn.getRemoteSocketAddress()); }

@Override public void onClose(WebSocket conn, int code, String reason, boolean remote) { System.out.println("Desconexión: " + conn.getRemoteSocketAddress() + " (" + reason + ")"); }

@Override public void onMessage(WebSocket conn, String message) { System.out.println("Mensaje recibido: " + message); // Enviamos el mensaje de vuelta a todos los clientes Set<WebSocket> connections = getConnections(); for (WebSocket client : connections) { client.send("Eco: " + message); } }

@Override public void onError(WebSocket conn, Exception ex) { System.err.println("Error: " + ex.getMessage()); if (conn != null) { conn.close(); } }

@Override public void onStart() { System.out.println("Servidor iniciado en el puerto " + getPort()); }

public static void main(String[] args) { int port = 8887; EchoServer server = new EchoServer(port); server.start(); }}


Este servidor se ejecuta en el puerto 8887 y, al recibir cualquier mensaje, lo envía de vuelta a todos los clientes conectados con el prefijo "Eco:".



Creación de un cliente WebSocket



Ahora escribamos un cliente que se conecte a nuestro servidor

Recommendations