I/O Fortgeschritten

Den asynchronen Standard-WebSocket-Client verwenden, statt eine Drittanbieterabhängigkeit hinzuzufügen.

✕ 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);
            }
        });
Problem mit diesem Code entdeckt? Sag uns Bescheid.
📦

Keine zusätzliche Abhängigkeit

Der WebSocket-Client ist Bestandteil des JDK.

🧵

Asynchrone API

Verbindungsaufbau und Nachrichtenverarbeitung lassen sich mit CompletionStage kombinieren.

🔗

Gemeinsamer HTTP-Stack

Proxy-, TLS- und Executor-Konfiguration verwenden die Standardfunktionen des JDK.

Alter Ansatz
WebSocket-Client eines Drittanbieters
Moderner Ansatz
java.net.http.WebSocket
Seit JDK
11
Schwierigkeitsgrad
Fortgeschritten
WebSocket-Clients mit java.net.http
Verfügbar

Weitgehend verfügbar seit JDK 11 (September 2018)

Das Paket java.net.http enthält einen asynchronen WebSocket-Client, der in den Standard-HTTP-Client integriert ist. Verbindungen werden mit CompletableFuture aufgebaut, Listener-Callbacks unterstützen über CompletionStage die nicht blockierende Nachrichtenverarbeitung, und der Client verwendet die standardmäßige Proxy-, TLS- und Executor-Konfiguration des JDK.