Klienci WebSocket z java.net.http
Używaj standardowego asynchronicznego klienta WebSocket zamiast dodawać zewnętrzną zależność.
Porównanie kodu
✕ 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ć.
Dlaczego nowoczesne podejście wygrywa
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
Wsparcie JDK
Klienci WebSocket z java.net.http
Dostępne
Szeroko dostępne od JDK 11 (wrzesień 2018)
Jak to działa
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.
Powiązana dokumentacja
Dowód