以编程方式启动 spring WebSocket

Launch spring WebSocket programmatically

一段时间后,我得到了我的 WebSocket 运行 这个配置:

@Configuration
//@EnableWebSocket
public class WebSocketServerConfig implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(myHandler(), "/var").setAllowedOrigins("*");
    }

    @Bean
    public WebSocketHandler myHandler() {
        return new WebsocketServer();
    }
}

但我找不到从我的代码启动此 WebSocket 的方法。

有没有办法稍后在我的程序中启动这个 WebSocket?

我找到了 this document,但它没有提供实现 startWebSocket() 功能或类似功能的方法。

您链接的文档显示了一个示例,其中 returns 是 EchoWebSocketHandler 的实例。

您可以接受连接并为 afterConnectionEstablishedhandleMessage 实施您自己的逻辑,使用一些内部状态来确定您是否应该接受 请求,即

@Configuration
 @EnableWebSocket
 public class MyConfiguration implements WebSocketConfigurer {

        @Override
        public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
                registry.addHandler(echoWebSocketHandler(), "/echo").withSockJS();
        }

        @Bean
        public WebSocketHandler echoWebSocketHandler() {
               //FooWebSocketHandler implements your specific logic
                return new FooWebSocketHandler();
        }
 }
 public class FooWebSocketHandler extends AbstractWebSocketHandler {
   private boolean enabled;
   ...
    public void handleMessage(WebSocketSession session,
                      WebSocketMessage<?> message)
               throws Exception {
     if (enabled) {//work
     } else {
       //disabled, i.e. throw exception or send data according to your api
     }
   }
 }