@Override public void onOpen(WebSocket websocket) { websocket.sendBinaryFrame(ECHO_BYTES); websocket.sendBinaryFrame(ECHO_BYTES); }
@Test(timeOut = 60000) public void sendByteMessage() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { getWebSocket(c).sendBinaryFrame("BYTES".getBytes()).get(10, TimeUnit.SECONDS); } }
@Test(timeOut = 60000, expectedExceptions = ExecutionException.class) public void streamBytesExpectFailure() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { CountDownLatch closeLatch = new CountDownLatch(1); WebSocket websocket = getWebSocket(c, closeLatch); websocket.sendCloseFrame(); closeLatch.await(1, TimeUnit.SECONDS); websocket.sendBinaryFrame("STREAM".getBytes(), true, 0).get(1, TimeUnit.SECONDS); } }
@Test(timeOut = 60000, expectedExceptions = ExecutionException.class) public void sendByteMessageExpectFailure() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { CountDownLatch closeLatch = new CountDownLatch(1); WebSocket websocket = getWebSocket(c, closeLatch); websocket.sendCloseFrame(); closeLatch.await(1, TimeUnit.SECONDS); websocket.sendBinaryFrame("BYTES".getBytes()).get(10, TimeUnit.SECONDS); } }
@Test(timeOut = 60000) public void streamBytes() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { getWebSocket(c).sendBinaryFrame("STREAM".getBytes(), true, 0).get(1, TimeUnit.SECONDS); } }
websocket.sendBinaryFrame(ECHO_BYTES); websocket.sendBinaryFrame(ECHO_BYTES);
websocket.sendBinaryFrame(ECHO_BYTES, false, 0); websocket.sendContinuationFrame(ECHO_BYTES, true, 0); latch.await();
private void echoByte0(boolean enableCompression) throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().setEnablewebSocketCompression(enableCompression))) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<byte[]> receivedBytes = new AtomicReference<>(new byte[0]); WebSocket websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @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(); } @Override public void onBinaryFrame(byte[] frame, boolean finalFragment, int rsv) { receivedBytes.set(frame); latch.countDown(); } }).build()).get(); websocket.sendBinaryFrame(ECHO_BYTES); latch.await(); assertEquals(receivedBytes.get(), ECHO_BYTES); } }
private void sendMessage(WebSocket webSocket, byte[] msg, boolean streaming) { if (streaming) { int p = 0; byte[] writebuf = new byte[streamBufferSize]; while (p < msg.length) { if (msg.length - p < streamBufferSize) { int rest = msg.length - p; // bug in grizzly? we need to create a byte array with the exact length //webSocket.stream(msg, p, rest, true); System.arraycopy(msg, p, writebuf, 0, rest); byte[] tmpbuf = new byte[rest]; System.arraycopy(writebuf, 0, tmpbuf, 0, rest); webSocket.sendBinaryFrame(tmpbuf, true, 0); // ends p = msg.length; } else { // bug in grizzly? we need to create a byte array with the exact length //webSocket.stream(msg, p, streamBufferSize, false); System.arraycopy(msg, p, writebuf, 0, streamBufferSize); webSocket.sendBinaryFrame(writebuf, false, 0); // ends p += streamBufferSize; } } } else { webSocket.sendBinaryFrame(msg); } }
private void sendStreamMessage(WebSocket webSocket, InputStream in) throws IOException { byte[] readbuf = new byte[streamBufferSize]; byte[] writebuf = new byte[streamBufferSize]; int rn = 0; int wn = 0; try { while ((rn = in.read(readbuf, 0, readbuf.length)) != -1) { if (wn > 0) { webSocket.sendBinaryFrame(writebuf, false, 0); } System.arraycopy(readbuf, 0, writebuf, 0, rn); wn = rn; } // a bug in grizzly? we need to create a byte array with the exact length if (wn < writebuf.length) { byte[] tmpbuf = writebuf; writebuf = new byte[wn]; System.arraycopy(tmpbuf, 0, writebuf, 0, wn); } // ends webSocket.sendBinaryFrame(writebuf, true, 0); } finally { in.close(); } }