簡體   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