У меня есть служба под названием UserMediator, в которой есть метод для извлечения всех пользователей в базе данных, к которой у пользователя сеанса есть доступ.
@Service
@Scope(scopeName = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserMediator {
@Autowired
private UserService userSerivce;
pulibc Collection<User> getAllUsers() {
Session session = someMethodToGetTheCurrentSessionFromThisService();
return userService.getAllUsersThatYouAreAllowedToSee(session);
}
}
Я знаю, что при использовании области websocket один экземпляр этой службы будетбыть создан для каждого сеанса websocket, поэтому, я думаю, должен быть способ получить сеанс, который создал этот компонент.
Один из способов сделать это - переопределить getAllUsers () для getAllUsers (StompHeaderAcessor ha) и получить сессию с использованием этого заголовка, но для меня это не является правильным решением.
Есть ли способ получить текущий сеанс websocket в сервисе с ограниченным доступом websocket, не передавая его в виде аргументов?