Как определить, какой пользователь отключен при использовании Stomp в весенней загрузке? - PullRequest
0 голосов
/ 14 февраля 2020

Я использую json веб-токен, и в соответствии с некоторыми уроками, я устанавливаю имя пользователя, как показано ниже

public class MyChannelInterceptor implements ChannelInterceptor {
    private static Logger logger = LoggerFactory.getLogger(MyChannelInterceptor.class);

    @Override
    public Message<?> preSend(Message<?> message, MessageChannel channel) {
        StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message);

        if (StompCommand.CONNECT.equals(accessor.getCommand())) {
            String jwt = accessor.getNativeHeader("authorization").get(0);

            String userId = extractUserIdFromJwt;

            logger.info("connected: " + userId);
            Principal principal = new Principal() {
                @Override
                public String getName() {
                    return userId;
                }
            };
            accessor.setUser(principal);
        } else if (StompCommand.DISCONNECT.equals(accessor.getCommand())) {
            // Principal principal = accessor.getUser();
            // logger.info(principal.getName() + " disconnect");
            // how to determine who is disconnecting?
            // the code commented could not work
        }

        return message;
    }
}

Мне нужно выполнить некоторую операцию очистки, когда кто-то подключен, но я не знаете, какой пользователь отключен, как этого добиться?

...