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