@Override public void onOpen(WebSocket websocket) { websocket.sendTextFrame("ECHO"); websocket.sendTextFrame("ECHO"); }
@Test(expectedExceptions = ExecutionException.class) public void streamTextExpectFailure() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { CountDownLatch closeLatch = new CountDownLatch(1); WebSocket websocket = getWebSocket(c, closeLatch); websocket.sendCloseFrame(); closeLatch.await(1, TimeUnit.SECONDS); websocket.sendTextFrame("STREAM", true, 0).get(1, TimeUnit.SECONDS); } }
@Test(timeOut = 60000, expectedExceptions = ExecutionException.class) public void sendTextMessageExpectFailure() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { CountDownLatch closeLatch = new CountDownLatch(1); WebSocket websocket = getWebSocket(c, closeLatch); websocket.sendCloseFrame(); closeLatch.await(1, TimeUnit.SECONDS); websocket.sendTextFrame("TEXT").get(10, TimeUnit.SECONDS); } }
@Test(timeOut = 60000) public void sendTextMessage() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { getWebSocket(c).sendTextFrame("TEXT").get(10, TimeUnit.SECONDS); } }
@Test public void streamText() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { getWebSocket(c).sendTextFrame("STREAM", true, 0).get(1, TimeUnit.SECONDS); } }
websocket.sendTextFrame("ECHO"); textLatch.await(); websocket.sendTextFrame("CLOSE"); closeLatch.await();
@Test(timeOut = 60000) public void echoText() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onTextFrame(String payload, boolean finalFragment, int rsv) { text.set(payload); latch.countDown(); } @Override public void onOpen(WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); websocket.sendTextFrame("ECHO"); latch.await(); assertEquals(text.get(), "ECHO"); } }
@Test public void echoFragments() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onTextFrame(String payload, boolean finalFragment, int rsv) { text.set(payload); latch.countDown(); } @Override public void onOpen(WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); websocket.sendTextFrame("ECHO", false, 0); websocket.sendContinuationFrame("ECHO", true, 0); latch.await(); assertEquals(text.get(), "ECHOECHO"); } }
websocket.sendTextFrame("ECHO");
websocket.sendTextFrame("ECHO");
/** * This method sends message to slack using webSocket client * @param message */ public void sendMessage(String message){ webSocket.sendTextFrame(message); }
private void sendMessage(WebSocket webSocket, String msg, boolean streaming) { if (streaming) { int p = 0; while (p < msg.length()) { if (msg.length() - p < streamBufferSize) { webSocket.sendTextFrame(msg.substring(p), true, 0); p = msg.length(); } else { webSocket.sendTextFrame(msg.substring(p, streamBufferSize), false, 0); p += streamBufferSize; } } } else { webSocket.sendTextFrame(msg); } }
private void ping() { ObjectNode pingMessage = mapper.createObjectNode(); pingMessage.put("id", ++socketId); pingMessage.put("type", "ping"); String pingJson = pingMessage.toString(); webSocket.sendTextFrame(pingJson); logger.debug("ping : " + pingJson); }
@Override public void process(Exchange exchange) throws Exception { Message in = exchange.getIn(); Object message = in.getBody(); if (message != null) { log.debug("Sending out {}", message); if (message instanceof String) { sendMessage(getWebSocket(), (String)message, getEndpoint().isUseStreaming()); } else if (message instanceof byte[]) { sendMessage(getWebSocket(), (byte[])message, getEndpoint().isUseStreaming()); } else if (message instanceof InputStream) { sendStreamMessage(getWebSocket(), (InputStream)message); } else { //TODO provide other binding option, for now use the converted string getWebSocket().sendTextFrame(in.getMandatoryBody(String.class)); } } }