基于 Spring Boot 和 WebSocket 的 Java 实时聊天室实战
这是一个采用前后端分离架构的轻量级 Web 聊天应用,核心目标是提供一个稳定、实时的消息通信平台。项目支持用户认证、好友管理以及一对一私聊功能,技术选型上主要依赖 Spring Boot 配合 WebSocket 实现双向持久连接。
核心特性
- 实时通信:基于 WebSocket 协议,确保消息秒级推送。
- 基础功能:涵盖用户注册登录、好友列表展示、私聊会话管理及历史记录查询。
- 后端架构:Spring Boot 2.7.6 快速构建 RESTful API,MyBatis 处理数据持久化。
- 前端交互:使用 HTML/CSS/JavaScript 结合 jQuery,保持轻量易维护。
系统架构与数据流
项目的核心在于 Spring Boot 与 WebSocket 的集成。我们采用经典的三层架构(Controller/Service/Dao),配合 WebSocket 的通信模型来处理并发连接。
通信流程解析
- 登录与会话建立:用户通过 HTTP
/login接口登录后,服务端返回必要的会话信息。 - WebSocket 握手:客户端发起 WebSocket 连接请求至
/WebSocketMessage端点。 - Session 绑定:服务器将当前用户的 ID 与对应的 WebSocket Session 进行绑定并存储,这是实现点对点推送的关键。
- 消息收发:当用户 A 发送消息时,服务端根据消息中的目标 ID 查找对应的 Session,并通过该通道实时推送给用户 B。
这种机制避免了传统轮询带来的资源浪费,保证了通信的低延迟和高效率。
项目结构概览
代码采用了清晰的模块化设计,便于后续维护和扩展:
java_chatroom/
├── src/
│ ├── main/
│ │ ├── java/com/example/java_chatroom/
│ │ │ ├── api/ # Controller 层
│ │ │ ├── component/ # 组件类
│ │ │ ├── config/ # 配置类
│ │ │ └── model/ # 数据模型
│ │ ├── resources/
│ │ │ ├── mapper/ # MyBatis XML 映射文件
│ │ │ └── static/ # 前端静态资源 (HTML/CSS/JS)
│ │ └── db.sql # 数据库初始化脚本
├── pom.xml # Maven 依赖配置
└── README.md # 项目说明文档
数据库设计
系统共设计了 5 个核心表来支撑用户关系和消息存储,逻辑清晰且易于扩展。
| 表名 | 描述 | 关键字段 | 关系说明 |
|---|---|---|---|
| user |


