I/O Средний

Используйте стандартный асинхронный клиент WebSocket вместо добавления сторонней зависимости.

✕ 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);
            }
        });
Заметили проблему в этом коде? Сообщите нам.
📦

Без дополнительной зависимости

Клиент WebSocket входит в состав JDK.

🧵

Асинхронный API

Установление соединения и обработка сообщений компонуются с CompletionStage.

🔗

Общий стек HTTP

Для прокси, TLS и исполнителя используются стандартные средства JDK.

Старый подход
Сторонний клиент WebSocket
Современный подход
java.net.http.WebSocket
Начиная с JDK
11
Сложность
Средний
Клиенты WebSocket с java.net.http
Доступно

Широко доступно начиная с JDK 11 (сентябрь 2018)

Пакет java.net.http включает асинхронный клиент WebSocket, интегрированный со стандартным HTTP-клиентом. Соединения устанавливаются с помощью CompletableFuture, обратные вызовы слушателя поддерживают неблокирующую обработку сообщений через CompletionStage, а клиент использует стандартные настройки прокси, TLS и исполнителя из JDK.