我正在开发的应用程序具有对实体进行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);
    }
}


}

在afterConnectionFounded内部,我想使用注入普通@RestController类的控制器中的方法。有可能这样做吗?如果没有,我应该如何重构。
PS WebSocket可以工作。

最佳答案

您可以在处理程序中使用依赖项注入(@Autowired批注),然后从rest控制器调用方法。但是为什么要这么做呢?控制器内部是否有业务逻辑?

09-27 14:25