@Override public void onFailure(Throwable t) { for (WebSocketListener w : listeners) { if (!ok.get() && webSocket != null) { webSocket.addWebSocketListener(w); } w.onError(t); } }
@Override public void onOpen(com.ning.http.client.ws.WebSocket websocket) { websocket.sendMessage("ECHO").sendMessage("ECHO"); }
@Test(timeOut = 60000) public void onCloseWithCode() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(null)) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = client.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new Listener(latch, text)).build()).get(); websocket.close(); latch.await(); assertTrue(text.get().startsWith("1000")); } }
/** * {@inheritDoc} */ @Override public void close() { status = Socket.STATUS.CLOSE; if (closed.getAndSet(true)) return; if (options.reconnectTimeoutInMilliseconds() <= 0 && !options.reconnect()) { timer.shutdown(); } TransportsUtil.invokeFunction(CLOSE, decoders, functions, String.class, CLOSE.name(), CLOSE.name(), resolver); if (webSocket != null && webSocket.isOpen()) webSocket.close(); futureDone(); }
@Override public void onOpen(WebSocket websocket) { websocket.sendMessage("ECHO".getBytes()).sendMessage("ECHO".getBytes()); }
@Test(timeOut = 60000) public void onClose() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(null)) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = client.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(com.ning.http.client.ws.WebSocket websocket) { } @Override public void onClose(com.ning.http.client.ws.WebSocket websocket) { text.set("OnClose"); latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); websocket.close(); latch.await(); assertEquals(text.get(), "OnClose"); } }
/** * {@inheritDoc} */ @Override public void close() { status = Socket.STATUS.CLOSE; if (closed.getAndSet(true)) return; if (options.reconnectTimeoutInMilliseconds() <= 0 && !options.reconnect()) { timer.shutdown(); } TransportsUtil.invokeFunction(CLOSE, decoders, functions, String.class, CLOSE.name(), CLOSE.name(), resolver); if (webSocket != null && webSocket.isOpen()) webSocket.close(); futureDone(); }
public void echoFragments() throws Throwable { try (AsyncHttpClient client = getAsyncHttpClient(null)) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = client.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketTextListener() { @Override public void onMessage(String message) { text.set(message); latch.countDown(); } @Override public void onOpen(com.ning.http.client.ws.WebSocket websocket) { } @Override public void onClose(com.ning.http.client.ws.WebSocket websocket) { latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); websocket.stream("ECHO", false); websocket.stream("ECHO", true); latch.await(); assertEquals(text.get(), "ECHOECHO"); } }
public WebSocketTransport sendMessage(byte[] message) { if (webSocket != null && !status.equals(Socket.STATUS.ERROR) && !status.equals(Socket.STATUS.CLOSE)) { webSocket.sendMessage(message); } return this; }
@Override public void onSuccess(WebSocket webSocket) { this.webSocket = webSocket; for (WebSocketListener listener : listeners) { webSocket.addWebSocketListener(listener); listener.onOpen(webSocket); } ok.set(true); }
@Test(timeOut = 60000) public void testRedirectToWSResource() throws Exception { try (AsyncHttpClient client = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().setFollowRedirect(true).build())) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = client.prepareGet(getRedirectURL()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(com.ning.http.client.ws.WebSocket websocket) { text.set("OnOpen"); latch.countDown(); } @Override public void onClose(com.ning.http.client.ws.WebSocket websocket) { } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); latch.await(); assertEquals(text.get(), "OnOpen"); websocket.close(); } }
public WebSocketTransport sendMessage(String message) { if (webSocket != null && !status.equals(Socket.STATUS.ERROR) && !status.equals(Socket.STATUS.CLOSE)) { webSocket.sendMessage(message); } return this; }
public void onClose(WebSocket webSocket, int status, String reasonPhrase) { // Connect failure if (this.webSocket == null) this.webSocket = webSocket; for (WebSocketListener listener : listeners) { if (webSocket != null) { webSocket.addWebSocketListener(listener); } listener.onClose(webSocket); if (listener instanceof WebSocketCloseCodeReasonListener) { WebSocketCloseCodeReasonListener.class.cast(listener).onClose(webSocket, status, reasonPhrase); } } }
public ClientEndpoint createFor ( AsyncHttpClient httpClient, String destination, MetricsCollector metricsCollector) { StreamCreatingWebSocketTextListener listener = new StreamCreatingWebSocketTextListener(); WebSocketUpgradeHandler webSocketUpgradeHandler =new WebSocketUpgradeHandler.Builder() .addWebSocketListener(listener) .build(); com.ning.http.client.ws.WebSocket underlyingWebSocket = openConnection(httpClient, destination, webSocketUpgradeHandler); WebSocket webSocket = createWebSocket(destination, underlyingWebSocket, metricsCollector); Function<com.ning.http.client.ws.WebSocket, WebSocket> webSocketFactory = rawSocket -> webSocket; EndpointStreamSource endpointStreamSource = EndpointStreamSourceFactory.createStreamSourceFor(destination, webSocketFactory, listener, metricsCollector); Consumer<CloseReason> closeAction = closeReason -> { if (underlyingWebSocket instanceof GrizzlyWebSocketAdapter) { GrizzlyWebSocketAdapter gwsa = (GrizzlyWebSocketAdapter) underlyingWebSocket; gwsa.getGrizzlyWebSocket().close(closeReason.code, closeReason.text); } else { underlyingWebSocket.close(); } listener.close(); }; return new ClientEndpoint(destination, endpointStreamSource, webSocket, closeAction, messageTranscriber, metricsCollector); }
public WebSocketTransport sendMessage(String message) { if (webSocket != null && !status.equals(Socket.STATUS.ERROR) && !status.equals(Socket.STATUS.CLOSE)) { webSocket.sendMessage(message); } return this; }
@Override public void onSuccess(WebSocket webSocket) { this.webSocket = webSocket; for (WebSocketListener listener : listeners) { webSocket.addWebSocketListener(listener); listener.onOpen(webSocket); } ok.set(true); }
public WebSocketTransport sendMessage(byte[] message) { if (webSocket != null && !status.equals(Socket.STATUS.ERROR) && !status.equals(Socket.STATUS.CLOSE)) { webSocket.sendMessage(message); } return this; }
@Override public void onFailure(Throwable t) { for (WebSocketListener w : listeners) { if (!ok.get() && webSocket != null) { webSocket.addWebSocketListener(w); } w.onError(t); } }
@Override public <T> void accept(T message) throws Exception { String messageAsString = messageTranscriber.getOutgoingMessageTranscriber(message).apply(message); webSocket.sendMessage(messageAsString); metricsCollector.messageSent(destination); } };