WebSocket-Clients mit java.net.http
Den asynchronen Standard-WebSocket-Client verwenden, statt eine Drittanbieterabhängigkeit hinzuzufügen.
Code-Vergleich
✕ 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.
Warum der moderne Weg gewinnt
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
JDK-Unterstützung
WebSocket-Clients mit java.net.http
Verfügbar
Weitgehend verfügbar seit JDK 11 (September 2018)
Wie es funktioniert
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.
Zugehörige Dokumentation
Beweis