Spring Boot:从WebSocket连接提供聚合数据

时间:2019-05-01 18:49:17

标签: spring spring-boot

我想用Spring Boot创建一个RESTful Web应用程序,该应用程序将不断从websocket连接中接收信息,对其进行聚合并通过其REST API提供这些聚合数据。

因此,我需要打开并维护WebSocket连接,同时还要在SpringApplication.run()函数中运行main()

@Scheduled批注似乎仅在特定时间或间隔运行任务,但似乎没有办法始终在后台运行某些东西。

实现我所描述的内容的明智方法是什么?

2 个答案:

答案 0 :(得分:0)

仅在应用程序启动时将您的应用程序连接到套接字

@SpringBootApplication
public class SpringBootConsoleApplication 
implements CommandLineRunner {

private static Logger LOG = LoggerFactory
  .getLogger(SpringBootConsoleApplication.class);

public static void main(String[] args) {
    LOG.info("STARTING THE APPLICATION");
    SpringApplication.run(SpringBootConsoleApplication.class, args);
    LOG.info("APPLICATION FINISHED");
}

@Override
public void run(String... args) {
    //Connect to socket and cache the results if you want to
}}

在应用程序上下文加载后,Spring Boot将自动调用实现此接口的所有bean的run方法

有关命令行运行程序的更多信息,您可以访问is/2

答案 1 :(得分:0)

为什么不使用Spring提供的WebSocketClient?连接后,每次收到新的Websocket框架时,您都会通过回调方法收到通知。

您可以在https://www.baeldung.com/websockets-api-java-spring-client

处查看示例

只需将其放在带有@Component@Service注释的类中,即可通过构造函数启动websocket会话。

由于您的服务器始终处于运行状态,因此无需执行new Scanner(System.in).nextLine()