Как в Spring + STOMP вернуть ID сессии подключения?

Здравствуйте, мне нужно получить SessionId, когда происходит соединение с сокетом.

О какой SessionId идет речь, о том что идентифицирует сокет соединение.
Пример в котором можно получить этот самый SessionId
@MessageMapping("/find")
public void find(SimpMessageHeaderAccessor sha, User user) {
    String sessionId = sha.getSessionId();
    LOG.debug("New session id - {}, {}", sessionId, user);
    // New session id - rs5ahsly, {user: Name, ...}
    Repository.add(sessionId, user);
}

Зная SessionId можно отправить сообщение конкретному подписчику.

Вопрос в следующем, мне необходимо вернуть SessionId когда устанавливается соединение с сервером по протоколу STOMP. Вот такой примерно респонс хочу получить от сервера:
CONNECTED↵version:1.1↵heart-beat:0,0↵sessionId:rs5ahsly↵↵


Например, я могу сгенерировать уникальный идентификационный ключ пользователя с помощью кода ниже, но это вернет randomUUID
public class CustomHandshakeHandler extends DefaultHandshakeHandler {    
    @Override
    protected Principal determineUser(ServerHttpRequest request,
                                      WebSocketHandler wsHandler,
                                      Map<String, Object> attributes) {
        return new StompPrincipal(UUID.randomUUID().toString());
    }
}

Как я могу сделать что-то подобное, но вернуть сокет SessionId?
По моему из DefaultHandshakeHandler к SessionId вообще доступа нету
  • Вопрос задан
  • 326 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы