通过编程启动Spring Websocket



一段时间后,我使用此配置来运行我的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?

我找到了此文档,但它没有提供实现startWebSocket()函数或类似内容的方法。

您链接的文档显示了一个示例,其中它返回了一个echowebsockethandler的实例。

您可以使用某些内部状态来接受连接并实现自己的逻辑 afterconnection handlemessage ,以确定您是否应该接受请求,即。

@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
     }
   }
 }

最新更新