Когда сеанс STOMP подключен, выполняется этот фрагмент кода:
else if (StompCommand.CONNECTED.equals(command)) {
this.stats.incrementConnectedCount();
accessor = afterStompSessionConnected(message, accessor, session);
if (this.eventPublisher != null && StompCommand.CONNECTED.equals(command)) {
try {
SimpAttributes simpAttributes = new SimpAttributes(session.getId(), session.getAttributes());
SimpAttributesContextHolder.setAttributes(simpAttributes);
Principal user = getUser(session);
publishEvent(this.eventPublisher, new SessionConnectedEvent(this, (Message<byte[]>) message, user));
}
finally {
SimpAttributesContextHolder.resetAttributes();
}
}
}
Обратите внимание на SessionConnectedEvent
для прослушивания с @EventListener
, а также на SimpAttributesContextHolder
. Вы можете получить доступ к sessionId
в этом прослушивателе событий, используя статический API из SimpAttributesContextHolder
.
С другой стороны, упомянутое сообщение в событии имеет специальный заголовок simpSessionId
для вашего рассмотрения.