Я разрабатываю приложение, которое имеет обычные конечные точки для операций CRUD над сущностями (я внедряю контроллер), поток приложения должен постоянно изменять свойства сущностей, поэтому мне нужно будет информировать интерфейсную часть об этих изменениях в реальном времени. Вот почему я зарегистрировал Web Socket
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry webSocketHandlerRegistry) {
webSocketHandlerRegistry.addHandler(new PositionHandler(),"/positions").setAllowedOrigins("*");
}
class PositionHandler extends TextWebSocketHandler {
private List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
while(session.isOpen()){
HERE I WOULD LIKE TO ACCESS METHOD FOR CONTROLLER
}
super.afterConnectionEstablished(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
for(WebSocketSession s: sessions){
session.sendMessage(message);
}
super.handleTextMessage(session, message);
}
}
}
внутри afterConnectionEstablished. Я хотел бы использовать методы из контроллера, который внедряется в обычный класс @RestController. Есть ли возможность сделать это? И если нет, то как я должен рефакторинг. PS WebSocket работает.