Clientes WebSocket con java.net.http
Usa el cliente WebSocket asíncrono estándar en lugar de añadir una dependencia de terceros.
Comparación de Código
✕ Third-party library
WebSocketClient client =
new WebSocketClient(serverUri) {
@Override
public void onMessage(String message) {
handle(message);
}
};
client.connect();
✓ Java 11+
HttpClient.newHttpClient()
.newWebSocketBuilder()
.buildAsync(serverUri,
new WebSocket.Listener() {
@Override
public CompletionStage<?> onText(
WebSocket socket,
CharSequence data,
boolean last) {
handle(data.toString());
return WebSocket.Listener.super
.onText(socket, data, last);
}
});
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Sin dependencias adicionales
El cliente WebSocket se incluye en el JDK.
API asíncrona
La conexión y el manejo de mensajes se componen con CompletionStage.
Pila HTTP compartida
La configuración de proxy, TLS y executor usa las capacidades estándar del JDK.
Enfoque Antiguo
Cliente WebSocket de terceros
Enfoque Moderno
java.net.http.WebSocket
Desde JDK
11
Dificultad
Intermedio
Soporte JDK
Clientes WebSocket con java.net.http
Disponible
Ampliamente disponible desde JDK 11 (septiembre de 2018)
Cómo funciona
El paquete java.net.http incluye un cliente WebSocket asíncrono integrado con el cliente HTTP estándar. Las conexiones se establecen con CompletableFuture, los callbacks del listener permiten procesar mensajes sin bloqueos mediante CompletionStage y el cliente comparte la configuración estándar de proxy, TLS y executor del JDK.
Documentación Relacionada
Prueba