Отправить по WebSocket событие из SessionEndedListener SpringBoot
Я пытаюсь отправить событие по вебсокету на клиент, о том что сеанс окончен. Для вызова модального окна с соответствующем сообщении. Когда время сеанса истекло, у меня вызывается следующий метод:
public void onApplicationEvent(SessionDestroyedEvent event) {
for (SecurityContext securityContext : event.getSecurityContexts()) {
Authentication authentication = securityContext.getAuthentication();
SessionHolder sessionHolder = (SessionHolder) authentication.getPrincipal();
if (sessionHolder != null && sessionHolder.getSessionId() != null){
createSocketEvent(sessionHolder.getClient().getId(), sessionHolder.getSessionId());
}
}
}
createSocketEvent должен отправить на клиент событие, но текущее событие не приходит.
private void createSocketEvent(UUID clientId, String session) {
SocketClientEvent event = new SocketClientEvent();
event.setClientId(clientId);
event.setType(SocketClientEvent.Type.SESSION_DESTROY);
simpMessagingTemplate.convertAndSendToUser(session, "/queue/ended", event);
}
Если я вызываю метод createSocketEvent из любого обработчика когда пользователь авторизован, событие успешно уходит на клиент.