Example usage for org.springframework.messaging.simp SimpMessageHeaderAccessor getSessionId

List of usage examples for org.springframework.messaging.simp SimpMessageHeaderAccessor getSessionId

Introduction

In this page you can find the example usage for org.springframework.messaging.simp SimpMessageHeaderAccessor getSessionId.

Prototype

@Nullable
    public static String getSessionId(Map<String, Object> headers) 

Source Link

Usage

From source file:sample.websocket.WebSocketConnectHandler.java

public void onApplicationEvent(SessionConnectEvent event) {
    MessageHeaders headers = event.getMessage().getHeaders();
    Principal user = SimpMessageHeaderAccessor.getUser(headers);
    if (user == null) {
        return;//  w  w w. j a v  a2s  .c  om
    }
    String id = SimpMessageHeaderAccessor.getSessionId(headers);
    this.repository.save(new ActiveWebSocketUser(id, user.getName(), Calendar.getInstance()));
    this.messagingTemplate.convertAndSend("/topic/friends/signin", Arrays.asList(user.getName()));
}

From source file:org.springframework.messaging.simp.annotation.support.SubscriptionMethodReturnValueHandler.java

@Override
public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType, Message<?> message)
        throws Exception {

    if (returnValue == null) {
        return;/*w w  w .  j  ava  2  s  . c o  m*/
    }

    MessageHeaders headers = message.getHeaders();
    String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
    String subscriptionId = SimpMessageHeaderAccessor.getSubscriptionId(headers);
    String destination = SimpMessageHeaderAccessor.getDestination(headers);

    if (subscriptionId == null) {
        throw new IllegalStateException(
                "No simpSubscriptionId in " + message + " returned by: " + returnType.getMethod());
    }
    if (destination == null) {
        throw new IllegalStateException(
                "No simpDestination in " + message + " returned by: " + returnType.getMethod());
    }

    if (logger.isDebugEnabled()) {
        logger.debug("Reply to @SubscribeMapping: " + returnValue);
    }
    MessageHeaders headersToSend = createHeaders(sessionId, subscriptionId, returnType);
    this.messagingTemplate.convertAndSend(destination, returnValue, headersToSend);
}

From source file:org.springframework.messaging.simp.broker.AbstractSubscriptionRegistry.java

@Override
public final void registerSubscription(Message<?> message) {
    MessageHeaders headers = message.getHeaders();

    SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(headers);
    if (!SimpMessageType.SUBSCRIBE.equals(messageType)) {
        throw new IllegalArgumentException("Expected SUBSCRIBE: " + message);
    }/*from w  w w .j a va 2  s .co  m*/

    String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
    if (sessionId == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No sessionId in  " + message);
        }
        return;
    }

    String subscriptionId = SimpMessageHeaderAccessor.getSubscriptionId(headers);
    if (subscriptionId == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No subscriptionId in " + message);
        }
        return;
    }

    String destination = SimpMessageHeaderAccessor.getDestination(headers);
    if (destination == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No destination in " + message);
        }
        return;
    }

    addSubscriptionInternal(sessionId, subscriptionId, destination, message);
}

From source file:org.springframework.messaging.simp.broker.AbstractSubscriptionRegistry.java

@Override
public final void unregisterSubscription(Message<?> message) {
    MessageHeaders headers = message.getHeaders();

    SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(headers);
    if (!SimpMessageType.UNSUBSCRIBE.equals(messageType)) {
        throw new IllegalArgumentException("Expected UNSUBSCRIBE: " + message);
    }/* w w  w. ja v a 2  s .c om*/

    String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
    if (sessionId == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No sessionId in " + message);
        }
        return;
    }

    String subscriptionId = SimpMessageHeaderAccessor.getSubscriptionId(headers);
    if (subscriptionId == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No subscriptionId " + message);
        }
        return;
    }

    removeSubscriptionInternal(sessionId, subscriptionId, message);
}

From source file:org.springframework.messaging.simp.SimpAttributes.java

/**
 * Extract the SiMP session attributes from the given message and
 * wrap them in a {@link SimpAttributes} instance.
 * @param message the message to extract session attributes from
 *///from   w w  w  . j  av a  2s.c  om
public static SimpAttributes fromMessage(Message<?> message) {
    Assert.notNull(message, "Message must not be null");
    MessageHeaders headers = message.getHeaders();
    String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
    Map<String, Object> sessionAttributes = SimpMessageHeaderAccessor.getSessionAttributes(headers);
    if (sessionId == null) {
        throw new IllegalStateException("No session id in " + message);
    }
    if (sessionAttributes == null) {
        throw new IllegalStateException("No session attributes in " + message);
    }
    return new SimpAttributes(sessionId, sessionAttributes);
}

From source file:org.springframework.messaging.simp.user.DefaultUserDestinationResolver.java

@Nullable
private ParseResult parseSubscriptionMessage(Message<?> message, String sourceDestination) {
    MessageHeaders headers = message.getHeaders();
    String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
    if (sessionId == null) {
        logger.error("No session id. Ignoring " + message);
        return null;
    }/*from   www  .j  a  va2  s  .c om*/
    int prefixEnd = this.prefix.length() - 1;
    String actualDestination = sourceDestination.substring(prefixEnd);
    if (isRemoveLeadingSlash()) {
        actualDestination = actualDestination.substring(1);
    }
    Principal principal = SimpMessageHeaderAccessor.getUser(headers);
    String user = (principal != null ? principal.getName() : null);
    Set<String> sessionIds = Collections.singleton(sessionId);
    return new ParseResult(sourceDestination, actualDestination, sourceDestination, sessionIds, user);
}

From source file:org.springframework.messaging.simp.user.DefaultUserDestinationResolver.java

private ParseResult parseMessage(MessageHeaders headers, String sourceDest) {
    int prefixEnd = this.prefix.length();
    int userEnd = sourceDest.indexOf('/', prefixEnd);
    Assert.isTrue(userEnd > 0, "Expected destination pattern \"/user/{userId}/**\"");
    String actualDest = sourceDest.substring(userEnd);
    String subscribeDest = this.prefix.substring(0, prefixEnd - 1) + actualDest;
    String userName = sourceDest.substring(prefixEnd, userEnd);
    userName = StringUtils.replace(userName, "%2F", "/");

    String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
    Set<String> sessionIds;
    if (userName.equals(sessionId)) {
        userName = null;// www.  ja va2  s .  co  m
        sessionIds = Collections.singleton(sessionId);
    } else {
        sessionIds = getSessionIdsByUser(userName, sessionId);
    }

    if (isRemoveLeadingSlash()) {
        actualDest = actualDest.substring(1);
    }
    return new ParseResult(sourceDest, actualDest, subscribeDest, sessionIds, userName);
}

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

@Override
@Nullable
public String resolveSessionId(Message<?> message) {
    return SimpMessageHeaderAccessor.getSessionId(message.getHeaders());
}