Динамически добавлять соединение через веб-сокет через конечную точку REST в приложении весенней загрузки - PullRequest
0 голосов
/ 17 октября 2018

Я реализовал механизм WebSocket в приложении весенней загрузки.

@Configuration
@EnableWebSocket
public class WebSocketConfiguration implements WebSocketConfigurer {

    private String webSockerClientUri;
    private WebSocketHandlerRegistry webSocketHandlerRegistry;
    private  WebSocketHandler webSocketHandler;

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry webSocketHandlerRegistry) {
        this.webSocketHandlerRegistry = webSocketHandlerRegistry;
        this.webSocketHandler = registerWebSocketHandler();
        this.webSocketHandlerRegistry.addHandler(this.webSocketHandler, "/test");
    }

    public WebSocketHandler registerWebSocketHandler(){
        return new WebSocketHandler();
    }

    public WebSocketHandlerRegistry getWebSocketHandlerRegistry() {
        return webSocketHandlerRegistry;
    }

    public WebSocketHandler getWebSocketHandler() {
        return webSocketHandler;
    }
}

Во время запуска appp WebSocketHandlerMapping обнаруживает регистрацию соединения Websocket "/test".Я хотел бы сделать то же действие в конечной точке REST, как это.

@PostMapping("/{uri}")
public ResponseEntity register(@PathVariable("uri") String uri){
    if (uri != null){
        this.webSocketConfiguration.getWebSocketHandlerRegistry().addHandler(webSocketConfiguration.getWebSocketHandler(), "/" + uri);
        return new ResponseEntity(HttpStatus.OK);
    }
    else {
        return new ResponseEntity(HttpStatus.NO_CONTENT);
    }
}

Uri добавлен в WebSocketHandlerRegistry, однако механизм WebSocketHandlerMapping не обнаруживает этот факт, потому что это не состояние запуска приложения.Как я могу решить эту проблему?

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