]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/client/WebSocketEventClient.java
1 package org
.argeo
.cms
.client
;
4 import java
.net
.http
.WebSocket
;
5 import java
.nio
.ByteBuffer
;
6 import java
.util
.concurrent
.CompletableFuture
;
7 import java
.util
.concurrent
.CompletionStage
;
8 import java
.util
.concurrent
.ExecutionException
;
10 /** Tests connectivity to the web socket server. */
11 public class WebSocketEventClient
implements Runnable
{
13 private final URI uri
;
15 private WebSocket webSocket
;
17 private CmsClient cmsClient
;
19 public WebSocketEventClient(URI uri
) {
21 cmsClient
= new CmsClient(uri
);
27 CompletableFuture
<WebSocket
> ws
= cmsClient
.newWebSocket(new WsEventListener());
29 WebSocket webSocket
= ws
.get();
30 webSocket
.request(Long
.MAX_VALUE
);
32 Runtime
.getRuntime().addShutdownHook(new Thread(() -> webSocket
.sendClose(WebSocket
.NORMAL_CLOSURE
, "")));
34 while (!webSocket
.isInputClosed()) {
35 webSocket
.sendPing(ByteBuffer
.allocate(0));
38 } catch (InterruptedException e
) {
39 if (webSocket
!= null)
40 webSocket
.sendClose(WebSocket
.NORMAL_CLOSURE
, "");
41 } catch (ExecutionException e
) {
42 throw new RuntimeException("Cannot listent to " + uri
, e
.getCause());
46 private class WsEventListener
implements WebSocket
.Listener
{
47 public CompletionStage
<?
> onText(WebSocket webSocket
, CharSequence message
, boolean last
) {
48 System
.out
.println(message
);
49 CompletionStage
<String
> res
= CompletableFuture
.completedStage(message
.toString());
54 public CompletionStage
<?
> onPong(WebSocket webSocket
, ByteBuffer message
) {
55 // System.out.println("Pong received.");