总篇链接:SpringBoot实现WebSocket讲解及多种方式代码实现(代码大全),这一篇就够了!!!
1. WebFlux介绍
WebFlux是Spring Framework 5.0中引入的一种新的反应式Web框架。它基于Reactor项目实现Reactive Streams规范,是一种完全异步和非阻塞的框架。与传统的Spring MVC(基于Servlet的阻塞式模型)相比,WebFlux在处理大量并发请求时具有显著优势。它能够在较少的线程下处理更多的并发请求,提高应用程序的性能和可扩展性。特别是在微服务架构、实时数据推送等场景下,WebFlux的异步非阻塞特性显得尤为重要。
为什么要用WebFlux?
非阻塞I/O:WebFlux基于Netty、Undertow或Servlet 3.1+的非阻塞I/O特性,能够在较少的线程下处理更多的并发请求,从而提高了系统的吞吐量和响应速度。
响应式编程:WebFlux支持响应式编程模型,允许开发者以声明式的方式处理异步数据流,使得代码更加简洁和易于维护。
高并发支持:WebFlux特别适合于处理大量并发请求的场景,如微服务架构、实时数据推送等。
2. 代码编写
SpringBoot版本:2.4.3,JDK版本:1.8。
2.1 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
2.2 启动
这个很简单,就是常规SpringBoot方式启动就行
@SpringBootApplication
public class FirstBootApplication {
public static void main(String[] args) {
SpringApplication.run(FirstBootApplication.class, args);
}
}
2.3 实现WebSocketHandler
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.socket.WebSocketHandler;
import org.springframework.web.reactive.socket.WebSocketMessage;
import org.springframework.web.reactive.socket.WebSocketSession;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@Component
public class Si