private void handleBinaryMessage(javax.websocket.Session session, ByteBuffer payload, boolean isLast) { BinaryMessage binaryMessage = new BinaryMessage(payload, isLast); try { this.handler.handleMessage(this.wsSession, binaryMessage); } catch (Throwable ex) { ExceptionWebSocketHandlerDecorator.tryCloseWithError(this.wsSession, ex, logger); } }
@Override public int getPayloadLength() { return getPayload().remaining(); }
@Override protected void sendBinaryMessage(BinaryMessage message) throws IOException { getNativeSession().getBasicRemote().sendBinary(message.getPayload(), message.isLast()); }
byte[] payload = new byte[message.getPayloadLength()]; message.getPayload().get(payload); buffer = buffer == null ? payload : ArrayUtils.addAll(buffer, payload); if (!message.isLast()) { attribs.put(ATTR_BUFFER, buffer); return;
@Override protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception { if (message.getPayloadLength() == 0) { log.warn("Road: {}, stream: {}, sessionId: {} - Ignoring message with zero sized payload", roadName, streamName, sessionId); return; } service.onEvent(new String(message.getPayload().array(), UTF_8)); }
byte[] payload = new byte[message.getPayloadLength()]; message.getPayload().get(payload); buffer = buffer == null ? payload : ArrayUtils.addAll(buffer, payload); if (!message.isLast()) { attribs.put(ATTR_BUFFER, buffer); return;
@OnWebSocketMessage public void onWebSocketBinary(byte[] payload, int offset, int length) { BinaryMessage message = new BinaryMessage(payload, offset, length, true); try { this.webSocketHandler.handleMessage(this.wsSession, message); } catch (Throwable ex) { ExceptionWebSocketHandlerDecorator.tryCloseWithError(this.wsSession, ex, logger); } }
@Override protected String toStringPayload() { return getPayload().toString(); }
@Override protected void sendBinaryMessage(BinaryMessage message) throws IOException { getNativeSession().getBasicRemote().sendBinary(message.getPayload(), message.isLast()); }
public WebSocketMessage<?> encode(Message<byte[]> message, Class<? extends WebSocketSession> sessionType) { StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); Assert.notNull(accessor, "No StompHeaderAccessor available"); byte[] payload = message.getPayload(); byte[] bytes = ENCODER.encode(accessor.getMessageHeaders(), payload); boolean useBinary = (payload.length > 0 && !(SockJsSession.class.isAssignableFrom(sessionType)) && MimeTypeUtils.APPLICATION_OCTET_STREAM.isCompatibleWith(accessor.getContentType())); return (useBinary ? new BinaryMessage(bytes) : new TextMessage(bytes)); } }
@Override protected void sendBinaryMessage(BinaryMessage message) throws IOException { getRemoteEndpoint().sendBytes(message.getPayload()); }
@Override protected void sendBinaryMessage(BinaryMessage message) throws IOException { getNativeSession().getBasicRemote().sendBinary(message.getPayload(), message.isLast()); }
@Test @SuppressWarnings({"unchecked", "rawtypes"}) public void handleWebSocketMessageBinary() throws Exception { String text = "SEND\na:alpha\n\nMessage payload\0"; connect().handleMessage(this.webSocketSession, new BinaryMessage(text.getBytes(StandardCharsets.UTF_8))); ArgumentCaptor<Message> captor = ArgumentCaptor.forClass(Message.class); verify(this.stompSession).handleMessage(captor.capture()); Message<byte[]> message = captor.getValue(); assertNotNull(message); StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); StompHeaders headers = StompHeaders.readOnlyStompHeaders(accessor.toNativeHeaderMap()); assertEquals(StompCommand.SEND, accessor.getCommand()); assertEquals("alpha", headers.getFirst("a")); assertEquals("Message payload", new String(message.getPayload(), StandardCharsets.UTF_8)); }
public List<Message<byte[]>> decode(WebSocketMessage<?> webSocketMessage) { List<Message<byte[]>> result = Collections.emptyList(); ByteBuffer byteBuffer; if (webSocketMessage instanceof TextMessage) { byteBuffer = ByteBuffer.wrap(((TextMessage) webSocketMessage).asBytes()); } else if (webSocketMessage instanceof BinaryMessage) { byteBuffer = ((BinaryMessage) webSocketMessage).getPayload(); } else { return result; } result = this.bufferingDecoder.decode(byteBuffer); if (result.isEmpty()) { if (logger.isTraceEnabled()) { logger.trace("Incomplete STOMP frame content received, bufferSize=" + this.bufferingDecoder.getBufferSize() + ", bufferSizeLimit=" + this.bufferingDecoder.getBufferSizeLimit() + "."); } } return result; }
MimeTypeUtils.APPLICATION_OCTET_STREAM.isCompatibleWith(stompAccessor.getContentType())); if (useBinary) { session.sendMessage(new BinaryMessage(bytes));
@Test public void sendWebSocketBinary() throws Exception { StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.SEND); accessor.setDestination("/b"); accessor.setContentType(MimeTypeUtils.APPLICATION_OCTET_STREAM); byte[] payload = "payload".getBytes(StandardCharsets.UTF_8); getTcpConnection().send(MessageBuilder.createMessage(payload, accessor.getMessageHeaders())); ArgumentCaptor<BinaryMessage> binaryMessageCaptor = ArgumentCaptor.forClass(BinaryMessage.class); verify(this.webSocketSession).sendMessage(binaryMessageCaptor.capture()); BinaryMessage binaryMessage = binaryMessageCaptor.getValue(); assertNotNull(binaryMessage); assertEquals("SEND\ndestination:/b\ncontent-type:application/octet-stream\ncontent-length:7\n\npayload\0", new String(binaryMessage.getPayload().array(), StandardCharsets.UTF_8)); }
private void sendEvent(WebSocketSession session, String event) { try { // TODO: Remove next line and uncomment the following when move to send text websockets frames session.sendMessage(new BinaryMessage(event.getBytes(UTF_8))); // session.sendMessage(new TextMessage(event)); } catch (IOException e) { throw new UncheckedIOException(e); } }
byteBuffer = ((BinaryMessage) webSocketMessage).getPayload();
private void handleBinaryMessage(javax.websocket.Session session, ByteBuffer payload, boolean isLast) { BinaryMessage binaryMessage = new BinaryMessage(payload, isLast); try { this.handler.handleMessage(this.wsSession, binaryMessage); } catch (Throwable ex) { ExceptionWebSocketHandlerDecorator.tryCloseWithError(this.wsSession, ex, logger); } }
@Override public int getPayloadLength() { return getPayload().remaining(); }