Clients WebSocket avec java.net.http
Utilisez le client WebSocket asynchrone standard plutôt que d'ajouter une dépendance tierce.
Comparaison de Code
✕ 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);
}
});
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Aucune dépendance supplémentaire
Le client WebSocket est fourni avec le JDK.
API asynchrone
La connexion et le traitement des messages se composent avec CompletionStage.
Pile HTTP partagée
La configuration des proxies, de TLS et des executors utilise les mécanismes standard du JDK.
Ancienne Approche
Client WebSocket tiers
Approche Moderne
java.net.http.WebSocket
Depuis JDK
11
Difficulté
Intermédiaire
Support JDK
Clients WebSocket avec java.net.http
Disponible
Largement disponible depuis JDK 11 (septembre 2018)
Comment ça fonctionne
Le package java.net.http comprend un client WebSocket asynchrone intégré au client HTTP standard. Les connexions sont établies avec CompletableFuture, les callbacks du listener permettent le traitement non bloquant des messages via CompletionStage, et le client partage la configuration standard du JDK pour les proxies, TLS et les executors.
Documentation Associée
Preuve