X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fclient%2FWebSocketEventClient.java;h=e8dd2fa523f4c2305e42b6fd21353ff93fc9a61e;hb=c9100383d67d1be4c5797f084169a3faf513f5fb;hp=ed20e95b271a7b7168ad43821fcf0fbf96b9896c;hpb=5b6b49fa655c7b3ae3dcc06d6c504e3d0225684f;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/client/WebSocketEventClient.java b/org.argeo.cms/src/org/argeo/cms/client/WebSocketEventClient.java index ed20e95b2..e8dd2fa52 100644 --- a/org.argeo.cms/src/org/argeo/cms/client/WebSocketEventClient.java +++ b/org.argeo.cms/src/org/argeo/cms/client/WebSocketEventClient.java @@ -1,61 +1,30 @@ package org.argeo.cms.client; import java.net.URI; -import java.net.URL; -import java.net.http.HttpClient; import java.net.http.WebSocket; import java.nio.ByteBuffer; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.concurrent.ExecutionException; -import javax.security.auth.login.LoginContext; -import javax.security.auth.login.LoginException; - -import org.argeo.cms.auth.RemoteAuthUtils; -import org.argeo.util.http.HttpHeader; - /** Tests connectivity to the web socket server. */ public class WebSocketEventClient implements Runnable { private final URI uri; private WebSocket webSocket; - + + private CmsClient cmsClient; + public WebSocketEventClient(URI uri) { this.uri = uri; + cmsClient = new CmsClient(uri); } @Override public void run() { try { - WebSocket.Listener listener = new WebSocket.Listener() { - - public CompletionStage onText(WebSocket webSocket, CharSequence message, boolean last) { - System.out.println(message); - CompletionStage res = CompletableFuture.completedStage(message.toString()); - return res; - } - - @Override - public CompletionStage onPong(WebSocket webSocket, ByteBuffer message) { - // System.out.println("Pong received."); - return null; - } - - }; - - // SPNEGO - URL jaasUrl = SpnegoHttpClient.class.getResource("jaas-client-ipa.cfg"); - System.setProperty("java.security.auth.login.config", jaasUrl.toExternalForm()); - LoginContext lc = new LoginContext(SpnegoHttpClient.CLIENT_LOGIN_CONTEXT); - lc.login(); - String token = RemoteAuthUtils.createGssToken(lc.getSubject(), "HTTP", uri.getHost()); - - HttpClient client = SpnegoHttpClient.openHttpClient(lc.getSubject()); - CompletableFuture ws = client.newWebSocketBuilder() - .header(HttpHeader.AUTHORIZATION.getHeaderName(), HttpHeader.NEGOTIATE + " " + token) - .buildAsync(uri, listener); + CompletableFuture ws = cmsClient.newWebSocket(new WsEventListener()); WebSocket webSocket = ws.get(); webSocket.request(Long.MAX_VALUE); @@ -66,21 +35,26 @@ public class WebSocketEventClient implements Runnable { webSocket.sendPing(ByteBuffer.allocate(0)); Thread.sleep(10000); } - }catch (InterruptedException e) { + } catch (InterruptedException e) { if (webSocket != null) webSocket.sendClose(WebSocket.NORMAL_CLOSURE, ""); - } catch (ExecutionException | LoginException e) { + } catch (ExecutionException e) { throw new RuntimeException("Cannot listent to " + uri, e.getCause()); } } -// public static void main(String[] args) throws Exception { -// if (args.length == 0) { -// System.err.println("usage: java " + WebSocketEventClient.class.getName() + " "); -// System.exit(1); -// return; -// } -// URI uri = URI.create(args[0]); -// } + private class WsEventListener implements WebSocket.Listener { + public CompletionStage onText(WebSocket webSocket, CharSequence message, boolean last) { + System.out.println(message); + CompletionStage res = CompletableFuture.completedStage(message.toString()); + return res; + } + + @Override + public CompletionStage onPong(WebSocket webSocket, ByteBuffer message) { + // System.out.println("Pong received."); + return null; + } + } }