Здравствуйте, мне нужно получить 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 вообще доступа нету