Как в Spring + STOMP вернуть sessionId при подключении? - PullRequest
0 голосов
/ 02 марта 2020

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

Например, я могу сгенерировать уникальный идентификационный ключ пользователя с помощью:

public class CustomHandshakeHandler extends DefaultHandshakeHandler {    
    @Override
    protected Principal determineUser(ServerHttpRequest request,
                                      WebSocketHandler wsHandler,
                                      Map<String, Object> attributes) {
        return new StompPrincipal(UUID.randomUUID().toString());
    }
}

Результат будет что-то вроде этого:

CONNECTED↵version:1.1↵heart-beat:0,0↵user-name:d1496b70-7864-4acb-ad37-7541f3deebc2↵↵

Как мне сделать то же самое, но вернуть сокет 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);
}
...