gpt4 book ai didi

java - Spring Boot 端点 + webSocket

转载 作者:行者123 更新时间:2023-12-01 17:20:44 25 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序具有对实体进行 CRUD 操作的常规端点(我正在注入(inject) Controller ),应用程序的流程应该使实体的属性不断变化,因此我需要通知前端这些更改实时。这就是我注册 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 中,我想使用注入(inject)到普通 @RestController 类中的 Controller 中的方法。有可能做到吗?如果不是我应该如何重构。PS WebSocket 有效。

最佳答案

您可以在处理程序中进行依赖项注入(inject)(@Autowired 注释)并从其余 Controller 调用方法。但你为什么要这样做? Controller 内部有业务逻辑吗?

关于java - Spring Boot 端点 + webSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61295035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com