I/O Średniozaawansowany

Używaj standardowego asynchronicznego klienta WebSocket zamiast dodawać zewnętrzną zależność.

✕ 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);
            }
        });
Widzisz problem z tym kodem? Daj nam znać.
📦

Bez dodatkowej zależności

Klient WebSocket jest dostarczany z JDK.

🧵

Asynchroniczne API

Nawiązywanie połączenia i obsługę wiadomości można komponować z CompletionStage.

🔗

Wspólny stos HTTP

Konfiguracja proxy, TLS i executora korzysta ze standardowych mechanizmów JDK.

Stare podejście
Klient WebSocket z biblioteki zewnętrznej
Nowoczesne podejście
java.net.http.WebSocket
Od JDK
11
Poziom trudności
Średniozaawansowany
Klienci WebSocket z java.net.http
Dostępne

Szeroko dostępne od JDK 11 (wrzesień 2018)

Pakiet java.net.http zawiera asynchronicznego klienta WebSocket zintegrowanego ze standardowym klientem HTTP. Połączenia są nawiązywane za pomocą CompletableFuture, wywołania zwrotne listenera umożliwiają nieblokujące przetwarzanie wiadomości przez CompletionStage, a klient korzysta ze standardowej konfiguracji proxy, TLS i executora w JDK.