【发布时间】:2019-04-17 16:48:13
【问题描述】:
我有一个名为 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 会话创建此服务的一个实例,因此,我认为必须有一种方法来检索创建此 bean 的会话。
一种方法是将 getAllUsers() 重新定义为 getAllUsers(StompHeaderAcessor ha) 并使用此标头访问器获取会话,但这对我来说似乎不是正确的解决方案。
有没有什么方法可以在不通过参数显式传递的情况下在 websocket 范围服务中获取当前 websocket 会话?
【问题讨论】:
标签: java spring spring-boot spring-websocket