繁体   English   中英

Spring 引导端点 + webSocket

[英]Spring Boot endpoints + webSocket

我正在开发应用程序,该应用程序具有用于实体上的 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 内部我想使用 controller 中的方法,这些方法被注入到普通的@RestController class 中。 有没有可能做到这一点? 如果不是,我应该如何重构。 PS WebSocket 有效。

您可以在处理程序中进行依赖注入(@Autowired 注释)并从 rest controller 调用方法。 但你为什么要这样做? controller 里面有业务逻辑吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM