Example usage for org.springframework.messaging.simp.stomp StompHeaderAccessor setMessage

List of usage examples for org.springframework.messaging.simp.stomp StompHeaderAccessor setMessage

Introduction

In this page you can find the example usage for org.springframework.messaging.simp.stomp StompHeaderAccessor setMessage.

Prototype

public void setMessage(@Nullable String content) 

Source Link

Usage

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

protected void sendErrorMessage(WebSocketSession session, Throwable error) {

    StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.ERROR);
    headers.setMessage(error.getMessage());
    Message<?> message = MessageBuilder.withPayloadAndHeaders(new byte[0], headers).build();
    byte[] bytes = this.stompMessageConverter.fromMessage(message);
    try {//from   w ww  .j a v a 2s.  c o m
        session.sendMessage(new TextMessage(new String(bytes, Charset.forName("UTF-8"))));
    } catch (Throwable t) {
        // ignore
    }
}

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

/**
 * Invoked when no//  w w w.j a  va2 s .co m
 * {@link #setErrorHandler(StompSubProtocolErrorHandler) errorHandler}
 * is configured to send an ERROR frame to the client.
 */
private void sendErrorMessage(WebSocketSession session, Throwable error) {
    StompHeaderAccessor headerAccessor = StompHeaderAccessor.create(StompCommand.ERROR);
    headerAccessor.setMessage(error.getMessage());

    byte[] bytes = this.stompEncoder.encode(headerAccessor.getMessageHeaders(), EMPTY_PAYLOAD);
    try {
        session.sendMessage(new TextMessage(bytes));
    } catch (Throwable ex) {
        // Could be part of normal workflow (e.g. browser tab closed)
        logger.debug("Failed to send STOMP ERROR to client", 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 ww.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;
    }
}