以编程方式启动 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 的实例。
您可以接受连接并为 afterConnectionEstablished 或 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
}
}
}
一段时间后,我得到了我的 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 的实例。
您可以接受连接并为 afterConnectionEstablished 或 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
}
}
}