websocket的介绍及springBoot集成示例
WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手就可以创建一个持久的连接,两者之间就可以直接进行双向数据通信。
Spring Boot 对 WebSocket 的支持也是一stars:4. Spring Boot 对 WebSocket 的支持也是一stars:4. Spring Boot 对 WebSocket 的支持也是一stars:4.
Spring Boot 对 WebSocket 的支持主要通过 Spring Framework 的 WebSocket 模块实现,主要涉及到 ServerEndpointExporter 和 @ServerEndpoint 两个组件。
- 引入依赖
在pom.xml中引入spring-boot-starter-websocket依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
- 配置WebSocket
在Spring Boot的配置中添加WebSocket的配置,这是为了让Spring自动注册WebSocket的端点。
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
- 创建WebSocket的端点
使用@ServerEndpoint注解定义WebSocket的端点,并使用@OnOpen、@OnClose、@OnError、@OnMessage这四个注解分别定义打开连接、关闭连接、发生错误以及接收消息时的处理方法。
@Component
@ServerEndpoint("/websocket/{sid}")
public class WebSocketServer {
private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class);
private static final AtomicInteger OnlineCount = new AtomicInteger(0);
private String sid;
private Session session;
@OnOpen
public void onOpen(Session session, @PathParam("sid") String sid) {
this.session = session;
this.sid = sid;
OnlineCount.incrementAndGet(); // 在线数加1
log.info("有新连接加入:{},当前在线数为:{}", sid, OnlineCount.get());
}
@OnClose
public void onClose() {
OnlineCount.decrementAndGet(); // 在线数减1
log.info("连接断开:{},当前在线数为:{}", sid, OnlineCount.get());
}
@OnError
public void onError(Session session, Throwable error) {
log.error("发生错误:{}", error.getMessage());
}
@OnMessage
public void onMessage(String message, Session session) {
log.info("收到消息:{}", message);
this.session.getBasicRemote().sendText("来自服务器的消息:" + message);
}
}
以上代码就是一个简单的WebSocket服务器端的实现,它包含了We
评论已关闭