From 8b33fad79c187e5419948a0f49ec89f52562f9c8 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 31 Oct 2022 06:43:27 +0100 Subject: [PATCH] Improve CMS poing --- .../cms/websocket/server/PingEndpoint.java | 6 ++++ .../org/argeo/cms/jetty/JettyHttpServer.java | 2 +- .../src/org/argeo/cms/client/WsPing.java | 35 +++++++++++-------- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/org.argeo.cms.ee/src/org/argeo/cms/websocket/server/PingEndpoint.java b/org.argeo.cms.ee/src/org/argeo/cms/websocket/server/PingEndpoint.java index b81cc591d..5ae491acf 100644 --- a/org.argeo.cms.ee/src/org/argeo/cms/websocket/server/PingEndpoint.java +++ b/org.argeo.cms.ee/src/org/argeo/cms/websocket/server/PingEndpoint.java @@ -1,5 +1,7 @@ package org.argeo.cms.websocket.server; +import java.nio.channels.ClosedChannelException; + import javax.websocket.OnError; import javax.websocket.server.ServerEndpoint; @@ -11,6 +13,10 @@ public class PingEndpoint { @OnError public void onError(Throwable e) { + if (e instanceof ClosedChannelException) { + // ignore, as it probably means ping was closed on the other side + return; + } log.error("Cannot process ping", e); } } diff --git a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpServer.java b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpServer.java index 027ef9f3d..eb7b957dd 100644 --- a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpServer.java +++ b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpServer.java @@ -124,7 +124,7 @@ public class JettyHttpServer extends HttpsServer { started = true; } catch (Exception e) { stop(); - throw new IllegalStateException("Cannot start Jetty HTTPS server", e); + throw new IllegalStateException("Cannot start Jetty HTTP server", e); } } diff --git a/org.argeo.cms/src/org/argeo/cms/client/WsPing.java b/org.argeo.cms/src/org/argeo/cms/client/WsPing.java index 55d6f047f..caf679671 100644 --- a/org.argeo.cms/src/org/argeo/cms/client/WsPing.java +++ b/org.argeo.cms/src/org/argeo/cms/client/WsPing.java @@ -14,17 +14,19 @@ import java.util.concurrent.ExecutionException; /** Tests connectivity to the web socket server. */ public class WsPing implements Runnable { private final static int PING_FRAME_SIZE = 125; + private final static DecimalFormat decimalFormat = new DecimalFormat("0.0"); + static { + decimalFormat.setRoundingMode(RoundingMode.HALF_UP); + } private final URI uri; private final UUID uuid; - private final DecimalFormat decimalFormat; + private WebSocket webSocket; public WsPing(URI uri) { this.uri = uri; this.uuid = UUID.randomUUID(); - decimalFormat = new DecimalFormat("0.0"); - decimalFormat.setRoundingMode(RoundingMode.HALF_UP); } @Override @@ -52,7 +54,7 @@ public class WsPing implements Runnable { HttpClient client = HttpClient.newHttpClient(); CompletableFuture ws = client.newWebSocketBuilder().buildAsync(uri, listener); - WebSocket webSocket = ws.get(); + webSocket = ws.get(); webSocket.request(Long.MAX_VALUE); Runtime.getRuntime().addShutdownHook(new Thread(() -> webSocket.sendClose(WebSocket.NORMAL_CLOSURE, ""))); @@ -67,19 +69,22 @@ public class WsPing implements Runnable { webSocket.sendPing(buffer); Thread.sleep(1000); } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); + } catch (InterruptedException e) { + if (webSocket != null) + webSocket.sendClose(WebSocket.NORMAL_CLOSURE, ""); + } catch (ExecutionException e) { + throw new RuntimeException("Cannot ping " + uri, e.getCause()); } } - public static void main(String[] args) throws Exception { - if (args.length == 0) { - System.err.println("usage: java " + WsPing.class.getName() + " "); - System.exit(1); - return; - } - URI uri = URI.create(args[0]); - new WsPing(uri).run(); - } +// public static void main(String[] args) throws Exception { +// if (args.length == 0) { +// System.err.println("usage: java " + WsPing.class.getName() + " "); +// System.exit(1); +// return; +// } +// URI uri = URI.create(args[0]); +// new WsPing(uri).run(); +// } } -- 2.30.2