ListeningExecutorService executor = MoreExecutors.newDirectExecutorService();
ListenableFuture<Response> future = executor.submit(() -> sendRequest(url));
Futures.addCallback(future, new FutureCallback<Response>() {
public void onSuccess(Response response) {
}
public void onFailure(Throwable throwable) {
}
});
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(url))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
int statusCode = response.statusCode();
String responseBody = response.body();
WebSocket webSocket = WebSocket.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.buildAsync(new URI(webSocketUrl), new WebSocket.Listener() {
@Override
public void onOpen(WebSocket webSocket) {
}
@Override
public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) {
return CompletableFuture.completedFuture(null);
}
@Override
public CompletionStage<?> onClose(WebSocket webSocket, int statusCode, String reason) {
return CompletableFuture.completedFuture(null);
}
});
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1-jre</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-io</artifactId>
<version>1.0</version>
</dependency>