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

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

Introduction

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

Prototype

public void setAcceptVersion(String acceptVersion) 

Source Link

Usage

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

@Override
public void afterConnected(TcpConnection<byte[]> connection) {
    this.connection = connection;
    if (logger.isDebugEnabled()) {
        logger.debug("Connection established in session id=" + this.sessionId);
    }//from ww  w  . j a v a 2 s  .  c om
    StompHeaderAccessor accessor = createHeaderAccessor(StompCommand.CONNECT);
    accessor.addNativeHeaders(this.connectHeaders);
    accessor.setAcceptVersion("1.1,1.2");
    Message<byte[]> message = createMessage(accessor, EMPTY_PAYLOAD);
    execute(message);
}

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

/**
 * Open a "system" session for sending messages from parts of the application
 * not assoicated with a client STOMP session.
 *///from   ww w  .ja va 2s . com
private void openSystemSession() {

    RelaySession session = new RelaySession(STOMP_RELAY_SYSTEM_SESSION_ID) {
        @Override
        protected void sendMessageToClient(Message<?> message) {
            // ignore, only used to send messages
            // TODO: ERROR frame/reconnect
        }
    };
    this.relaySessions.put(STOMP_RELAY_SYSTEM_SESSION_ID, session);

    StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.CONNECT);
    headers.setAcceptVersion("1.1,1.2");
    headers.setLogin(this.systemLogin);
    headers.setPasscode(this.systemPasscode);
    headers.setHeartbeat(0, 0); // TODO

    if (logger.isDebugEnabled()) {
        logger.debug("Sending STOMP CONNECT frame to initialize \"system\" TCP connection");
    }
    Message<?> message = MessageBuilder.withPayloadAndHeaders(new byte[0], headers).build();
    session.open(message);
}

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

protected void handleConnect(WebSocketSession session, Message<?> message) throws IOException {

    StompHeaderAccessor connectHeaders = StompHeaderAccessor.wrap(message);
    StompHeaderAccessor connectedHeaders = StompHeaderAccessor.create(StompCommand.CONNECTED);

    Set<String> acceptVersions = connectHeaders.getAcceptVersion();
    if (acceptVersions.contains("1.2")) {
        connectedHeaders.setAcceptVersion("1.2");
    } else if (acceptVersions.contains("1.1")) {
        connectedHeaders.setAcceptVersion("1.1");
    } else if (acceptVersions.isEmpty()) {
        // 1.0//from w w  w  . ja va 2 s  .c om
    } else {
        throw new StompConversionException("Unsupported version '" + acceptVersions + "'");
    }
    connectedHeaders.setHeartbeat(0, 0); // TODO

    Principal principal = session.getPrincipal();
    if (principal != null) {
        connectedHeaders.setNativeHeader(CONNECTED_USER_HEADER, principal.getName());
        connectedHeaders.setNativeHeader(QUEUE_SUFFIX_HEADER, session.getId());

        if (this.queueSuffixResolver != null) {
            String suffix = session.getId();
            this.queueSuffixResolver.addQueueSuffix(principal.getName(), session.getId(), suffix);
        }
    }

    // TODO: security

    Message<?> connectedMessage = MessageBuilder.withPayloadAndHeaders(new byte[0], connectedHeaders).build();
    byte[] bytes = this.stompMessageConverter.fromMessage(connectedMessage);
    session.sendMessage(new TextMessage(new String(bytes, Charset.forName("UTF-8"))));
}