Example usage for org.springframework.messaging.simp SimpMessageType HEARTBEAT

List of usage examples for org.springframework.messaging.simp SimpMessageType HEARTBEAT

Introduction

In this page you can find the example usage for org.springframework.messaging.simp SimpMessageType HEARTBEAT.

Prototype

SimpMessageType HEARTBEAT

To view the source code for org.springframework.messaging.simp SimpMessageType HEARTBEAT.

Click Source Link

Usage

From source file:org.springframework.messaging.simp.stomp.StompEncoder.java

/**
 * Encodes the given payload and headers into a {@code byte[]}.
 * @param headers the headers//  ww  w. j  a  va2s. co  m
 * @param payload the payload
 * @return the encoded message
 */
public byte[] encode(Map<String, Object> headers, byte[] payload) {
    Assert.notNull(headers, "'headers' is required");
    Assert.notNull(payload, "'payload' is required");

    try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream(128 + payload.length);
        DataOutputStream output = new DataOutputStream(baos);

        if (SimpMessageType.HEARTBEAT.equals(SimpMessageHeaderAccessor.getMessageType(headers))) {
            logger.trace("Encoding heartbeat");
            output.write(StompDecoder.HEARTBEAT_PAYLOAD);
        }

        else {
            StompCommand command = StompHeaderAccessor.getCommand(headers);
            if (command == null) {
                throw new IllegalStateException("Missing STOMP command: " + headers);
            }

            output.write(command.toString().getBytes(StandardCharsets.UTF_8));
            output.write(LF);
            writeHeaders(command, headers, payload, output);
            output.write(LF);
            writeBody(payload, output);
            output.write((byte) 0);
        }

        return baos.toByteArray();
    } catch (IOException ex) {
        throw new StompConversionException("Failed to encode STOMP frame, headers=" + headers, ex);
    }
}

From source file:org.springframework.web.socket.messaging.StompSubProtocolHandler.java

private StompHeaderAccessor getStompHeaderAccessor(Message<?> message) {
    MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class);
    if (accessor instanceof StompHeaderAccessor) {
        return (StompHeaderAccessor) accessor;
    } else {// w w w.  j a  v  a  2 s  .c o  m
        StompHeaderAccessor stompAccessor = StompHeaderAccessor.wrap(message);
        SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(message.getHeaders());
        if (SimpMessageType.CONNECT_ACK.equals(messageType)) {
            stompAccessor = convertConnectAcktoStompConnected(stompAccessor);
        } else if (SimpMessageType.DISCONNECT_ACK.equals(messageType)) {
            String receipt = getDisconnectReceipt(stompAccessor);
            if (receipt != null) {
                stompAccessor = StompHeaderAccessor.create(StompCommand.RECEIPT);
                stompAccessor.setReceiptId(receipt);
            } else {
                stompAccessor = StompHeaderAccessor.create(StompCommand.ERROR);
                stompAccessor.setMessage("Session closed.");
            }
        } else if (SimpMessageType.HEARTBEAT.equals(messageType)) {
            stompAccessor = StompHeaderAccessor.createForHeartbeat();
        } else if (stompAccessor.getCommand() == null || StompCommand.SEND.equals(stompAccessor.getCommand())) {
            stompAccessor.updateStompCommandAsServerMessage();
        }
        return stompAccessor;
    }
}