Конечные точки Spring Boot + webSocket - PullRequest
0 голосов
/ 18 апреля 2020

Я разрабатываю приложение, которое имеет обычные конечные точки для операций 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 работает.

1 Ответ

0 голосов
/ 18 апреля 2020

Вы можете внедрить зависимости в ваш обработчик (аннотация @Autowired) и вызвать метод из контроллера rest. Но почему вы хотите сделать это? У вас есть бизнес-логика c внутри контроллера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...