> 技术文档 > SpringBoot3-整合WebSocket指南_springboot3 websocket

SpringBoot3-整合WebSocket指南_springboot3 websocket


更多SpringBoot3内容请关注我的专栏:《SpringBoot3》
期待您的点赞👍收藏⭐评论✍

SpringBoot3-整合WebSocket指南

  • 1. 什么是WebSocket?
  • 2. 环境准备
    • 2.1 项目依赖
  • 3. WebSocket配置
    • 3.1 WebSocket配置类
    • 3.2 自定义WebSocket处理器
  • 4. 控制器
  • 5. 前端实现
    • 5.1 HTML页面
  • 6. 测试WebSocket功能
  • 7. 进阶功能
    • 7.1 心跳检测
    • 7.2 消息重试机制
  • 8. 注意事项
  • 9. 总结
  • 参考资料

1. 什么是WebSocket?

WebSocket 是一种网络通信协议,提供全双工通信通道,使服务器可以主动向客户端推送数据。与传统的 HTTP 请求-响应模式不同,WebSocket 在建立连接后,允许服务器和客户端之间进行双向实时通信。

主要特点:

  • 建立在 TCP 协议之上
  • 与 HTTP 协议有良好的兼容性
  • 数据格式轻量,性能开销小
  • 可以发送文本和二进制数据
  • 没有同源限制,客户端可以与任意服务器通信

2. 环境准备

2.1 项目依赖

首先在pom.xml中添加必要的依赖:

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.5</version></parent><dependencies>  <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>  <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>  <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency></dependencies>

SpringBoot3-整合WebSocket指南_springboot3 websocket

3. WebSocket配置

3.1 WebSocket配置类

创建 WebSocket 配置类,启用 WebSocket 功能并注册端点:

package com.coderjia.boot3websocket.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.socket.WebSocketHandler;import org.springframework.web.socket.config.annotation.EnableWebSocket;import org.springframework.web.socket.config.annotation.WebSocketConfigurer;import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;/** * @author CoderJia * @create 2024/12/15 下午 08:11 * @Description **/@Configuration@EnableWebSocketpublic class WebSocketConfig implements WebSocketConfigurer {  @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {  registry.addHandler(