AtomicBoolean receivedFirstFrame = new AtomicBoolean(); ws.frameHandler(received -> { Buffer receivedBuffer = Buffer.buffer(received.textData()); if (!received.isFinal()) { assertEquals(firstFrame, receivedBuffer.toString());
/** * @return the content of this frame as a UTF-8 string and returns the converted string. Only use this for text frames. */ public String textData() { if (cached_0 != null) { return cached_0; } String ret = delegate.textData(); cached_0 = ret; return ret; }
/** * @return the content of this frame as a UTF-8 string and returns the converted string. Only use this for text frames. */ public String textData() { if (cached_0 != null) { return cached_0; } String ret = delegate.textData(); cached_0 = ret; return ret; }
@Test public void testCombineTextFrameSockJs() throws InterruptedException { String serverPath = "/text-combine-sockjs"; setupSockJsServer(serverPath, this::echoRequest); List<Buffer> receivedMessages = new ArrayList<>(); WebSocket openedWebSocket = setupSockJsClient(serverPath, receivedMessages); Buffer largeMessage = Buffer.buffer("[\"" + TestUtils.randomAlphaString(30) + "\"]"); WebSocketFrame frame1 = new WebSocketFrameImpl(FrameType.TEXT, largeMessage.slice(0, 10).getByteBuf(), false); WebSocketFrame frame2 = WebSocketFrame.continuationFrame(largeMessage.slice(10, 20), false); WebSocketFrame frame3 = WebSocketFrame.continuationFrame(largeMessage.slice(20, largeMessage.length()), true); log.debug("Client sending " + frame1.textData()); openedWebSocket.writeFrame(frame1); log.debug("Client sending " + frame2.textData()); openedWebSocket.writeFrame(frame2); log.debug("Client sending " + frame3.textData()); openedWebSocket.writeFrame(frame3); await(5, TimeUnit.SECONDS); assertEquals("Client should have received 2 messages: the reply and the close.", 2, receivedMessages.size()); Buffer expectedReply = Buffer.buffer("a" + largeMessage.toString()); assertEquals("Client reply should have matched request", expectedReply, receivedMessages.get(0)); assertEquals("Final message should have been a close", SOCKJS_CLOSE_REPLY, receivedMessages.get(1)); }
private JsonObject toJson(WebSocketFrame frame) { // We only expect text frame. return new JsonObject(frame.textData()); }
AtomicBoolean receivedFirstFrame = new AtomicBoolean(); ws.frameHandler(received -> { Buffer receivedBuffer = Buffer.buffer(received.textData()); if (!received.isFinal()) { assertEquals(firstFrame, receivedBuffer.toString());
String textData = frame.textData(); try { JSONObject jsonObject = (JSONObject) jsonParser.parse(textData);
private void handleSocketFrame(final WebSocketFrame frame) { try { if(frame.isText()) { handleSocketData(new JsonObject(frame.textData())); } if(frame.isBinary()) { handleBinaryData(frame.binaryData()); } if(frame.isClose()) { handleSocketCloseFrame(frame); } } catch(final Exception e) { catnip.logAdapter().error("Shard {}/{}: Failed to handle socket frame", id, limit, e); } }
case "/record": socket.frameHandler(frame -> { buffer.appendString(frame.textData()); if (!frame.isFinal()) { System.out.println("Non final frame sent from javascript ! " + frame);
@Test public void testCombineTextFrameSockJs() throws InterruptedException { String serverPath = "/text-combine-sockjs"; setupSockJsServer(serverPath, this::echoRequest); List<Buffer> receivedMessages = new ArrayList<>(); WebSocket openedWebSocket = setupSockJsClient(serverPath, receivedMessages); Buffer largeMessage = Buffer.buffer("[\"" + TestUtils.randomAlphaString(30) + "\"]"); WebSocketFrame frame1 = new WebSocketFrameImpl(FrameType.TEXT, largeMessage.slice(0, 10).getByteBuf(), false); WebSocketFrame frame2 = WebSocketFrame.continuationFrame(largeMessage.slice(10, 20), false); WebSocketFrame frame3 = WebSocketFrame.continuationFrame(largeMessage.slice(20, largeMessage.length()), true); log.debug("Client sending " + frame1.textData()); openedWebSocket.writeFrame(frame1); log.debug("Client sending " + frame2.textData()); openedWebSocket.writeFrame(frame2); log.debug("Client sending " + frame3.textData()); openedWebSocket.writeFrame(frame3); await(5, TimeUnit.SECONDS); assertEquals("Client should have received 2 messages: the reply and the close.", 2, receivedMessages.size()); Buffer expectedReply = Buffer.buffer("a" + largeMessage.toString()); assertEquals("Client reply should have matched request", expectedReply, receivedMessages.get(0)); assertEquals("Final message should have been a close", SOCKJS_CLOSE_REPLY, receivedMessages.get(1)); }