SpringBoot + MySQL + WebSocket 在线客服系统(坐席分配+聊天记录持久化)

📅 2026/7/2 9:46:25
SpringBoot + MySQL + WebSocket 在线客服系统(坐席分配+聊天记录持久化)
下面给你一套毕设/课设通用、逻辑完整、老师爱问、答辩不翻车的方案《基于 SpringBoot MySQL WebSocket 的在线客服系统坐席分配 聊天记录持久化》这套方案的亮点是✅WebSocket 实时通信​✅坐席自动分配算法​✅聊天记录落库​✅并发 会话管理清晰​非常适合作为Java Web / SpringBoot 课程设计或本科毕设。一、选题背景论文可直接用随着互联网服务的发展企业对在线客服系统的需求日益增长。传统客服系统存在以下问题依赖轮询实时性差、资源消耗大坐席分配不合理导致用户等待时间长聊天记录未持久化难以追溯与质检缺乏并发会话管理能力本系统基于SpringBoot WebSocket MySQL实现了用户与客服之间的实时通信、坐席智能分配及聊天记录持久化提升了客服效率和用户体验。二、技术架构浏览器JS WebSocket ↓ SpringBoot WebSocket ├── WebSocketHandler消息处理 ├── SessionManager会话管理 ├── AgentDispatcher坐席分配 ├── Service业务层 ├── MapperMyBatis ↓ MySQL用户、坐席、消息技术作用SpringBoot快速开发WebSocket全双工实时通信MyBatisORMMySQL数据持久化JacksonJSON 序列化Thymeleaf / Vue前端展示三、系统角色1️⃣ 用户访客发起会话发送/接收消息查看历史记录2️⃣ 客服坐席接收系统分配的会话同时处理多个会话回复用户消息3️⃣ 管理员坐席管理会话监控聊天记录查询四、核心业务流程答辩必画用户发起连接 ↓ WebSocket 建立连接 ↓ 系统分配空闲坐席 ↓ 绑定会话用户 ↔ 坐席 ↓ 双方实时聊天 ↓ 消息落库 ↓ 会话结束 / 超时关闭五、数据库设计核心表1️⃣ 用户表userCREATE TABLE user ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50), type INT COMMENT 1-用户 2-客服 );2️⃣ 客服坐席表agentCREATE TABLE agent ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT, max_session INT DEFAULT 5, current_session INT DEFAULT 0, status INT DEFAULT 1 COMMENT 1-在线 0-离线 );3️⃣ 会话表chat_sessionCREATE TABLE chat_session ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT, agent_id BIGINT, start_time DATETIME, end_time DATETIME, status INT COMMENT 1-进行中 2-已结束 );4️⃣ 聊天记录表chat_message⭐核心CREATE TABLE chat_message ( id BIGINT PRIMARY KEY AUTO_INCREMENT, session_id BIGINT, sender_id BIGINT, receiver_id BIGINT, content TEXT, send_time DATETIME, is_read TINYINT DEFAULT 0 );六、WebSocket 核心实现1️⃣ WebSocket 配置Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(chatWebSocketHandler(), /ws/chat) .setAllowedOrigins(*); } Bean public WebSocketHandler chatWebSocketHandler() { return new ChatWebSocketHandler(); } }2️⃣ WebSocket 处理器核心Component public class ChatWebSocketHandler extends TextWebSocketHandler { Autowired private SessionManager sessionManager; Autowired private AgentDispatcher agentDispatcher; Override public void afterConnectionEstablished(WebSocketSession session) { Long userId getUserId(session); sessionManager.putUserSession(userId, session); // 用户连接后分配坐席 Long agentId agentDispatcher.dispatch(); sessionManager.bindSession(userId, agentId); } Override protected void handleTextMessage(WebSocketSession session, TextMessage message) { ChatMsg msg JSON.parseObject(message.getPayload(), ChatMsg.class); chatService.saveAndSend(msg); } }七、坐席分配算法⭐ 创新点最少连接数分配推荐Service public class AgentDispatcher { public Long dispatch() { return agentMapper.selectLeastLoadedAgent(); } }SELECT id FROM agent WHERE status 1 AND current_session max_session ORDER BY current_session ASC LIMIT 1;老师常问为什么不用轮询✅ 答轮询可能导致部分坐席过载最少连接数更均衡。八、聊天记录持久化Service public class ChatService { Transactional public void saveAndSend(ChatMsg msg) { // 1. 落库 chatMessageMapper.insert(msg); // 2. 推送 WebSocketSession session sessionManager.getSession(msg.getReceiverId()); if (session ! null session.isOpen()) { session.sendMessage( new TextMessage(JSON.toJSONString(msg)) ); } } }九、会话管理关键Component public class SessionManager { private final MapLong, WebSocketSession userSessions new ConcurrentHashMap(); public void putUserSession(Long userId, WebSocketSession session) { userSessions.put(userId, session); } public WebSocketSession getSession(Long userId) { return userSessions.get(userId); } }✅ 使用ConcurrentHashMap保证线程安全十、前端 WebSocket 示例const socket new WebSocket(ws://localhost:8080/ws/chat); socket.onopen () { socket.send(JSON.stringify({ senderId: 1, receiverId: 2, content: 你好客服 })); }; socket.onmessage (event) { console.log(收到消息 event.data); };十一、系统特色答辩亮点✅ WebSocket 全双工实时通信✅ 坐席负载均衡分配算法✅ 聊天记录持久化 可追溯✅ 并发会话管理线程安全✅ 可扩展为分布式 / 微服务✅ 可接入 AI 客服 / 机器人十二、论文结构建议章节内容第1章绪论第2章相关技术WebSocket、SpringBoot第3章需求分析第4章系统设计架构、E-R图、时序图第5章系统实现连接、分配、存储第6章系统测试第7章总结与展望十三、可扩展方向体现工作量✅ 消息已读未读✅ 客服排队机制✅ 聊天记录检索ES✅ 文件/图片消息✅ 分布式 WebSocketRedis STOMP✅ 接入大模型客服机器人