SpringBoot 3 + WebSocket 搞定集群会话 & Token 认证 (STOMP实战)
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBA
👉 这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
-
《项目实战(视频)》:从书中学,往事中“练”
-
《互联网高频面试题》:面朝简历学习,春暖花开
-
《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题
-
《精进 Java 学习指南》:系统学习,互联网主流技术栈
-
《必读 Java 源码专栏》:知其然,知其所以然

👉这是一个或许对你有用的开源项目
国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构
RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRM、AI大模型、IoT物联网等功能:
多模块:https://gitee.com/zhijiantianya/ruoyi-vue-pro
微服务:https://gitee.com/zhijiantianya/yudao-cloud
视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK17/21+SpringBoot3、JDK8/11+Spring Boot2双版本
集成示例
该代码已用于生产验证,轻松应对万级日活用户!
Demo 演示
GitHub地址:
https://github.com/yangli-stu/quick-notify
本地启动:安装好redis后直接启动即可,无需依赖mysql
docker run -d --name redis -p 6379:6379 redis
打开浏览器访问:src/main/resources/stomp-websocket-sockjs.html
示例截图:
项目简介
本项目展示了如何在 Spring Boot 应用中集成 WebSocket + STOMP,实现:
-
实时消息通信
-
Token 用户认证
-
点对点消息推送
-
集群环境下的 WebSocket 会话转发
适用于社交类消息通知、实时状态更新、在线客服等场景。
核心模块结构
路径:src/main/java/io/stu/notify/stomp
├── NotifyMessage.java // WebSocket 消息结构定义
├── NotifyType.java // 消息类型枚举
├── StompWebSocketHandler.java // 消息推送管理器
├── StompWebsocketConfig.java // STOMP/WebSocket 配置
└── StompWebsocketInterceptor.java // 鉴权拦截器
StompWebsocketConfig
-
作用: 配置
WebSocket端点与消息代理。 -
说明: 实现
WebSocketMessageBrokerConfigurer接口。
StompWebsocketInterceptor
-
作用: 拦截
WebSocket连接请求,基于 Token 鉴权。 -
说明: 实现
ChannelInterceptor,绑定用户与会话。
StompWebSocketHandler
-
作用: 管理用户会话及消息发送(广播/点对点)。
-
说明: 封装
SimpMessagingTemplate,提供统一的推送入口。
NotifyMessage
-
作用: 自定义的消息格式对象。
-
字段: 消息 ID、接收者、消息体、类型、状态等。
NotifyType
-
作用: 定义支持的通知类型。
-
说明: 使用枚举 + 类型校验机制,避免数据结构不一致。
使用示例
广播消息
webSocketHandler.broadcastMessage(new NotifyMessage("messageId", "messageData"));
向指定用户发送消息
webSocketHandler.sendMessage(new NotifyMessage("messageId", "receiverUserId", "messageData"));
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
视频教程:https://doc.iocoder.cn/video/
集群模式:跨节点会话转发
核心类:StompNotifyEventListener
用于支持 分布式 WebSocket 会话处理,结合 Redisson + Redis Topic 实现。
处理流程
检查本地会话
-
如果当前节点存在目标用户会话:直接推送
-
否则:广播事件到其他节点
集群事件广播
-
使用 Redisson 发布事件到 Redis Topic
-
所有节点订阅该 Topic 实现集群通信
跨节点接收处理
-
接收到广播事件后判断是否拥有目标会话
-
若存在:推送给用户,否则忽略
架构图(简化版)
NotifyMessageEvent
│
▼
StompNotifyEventListener
│
┌────┴────────────┐
│ │
[当前节点有会话] [无会话:广播事件]
│ │
▼ ▼
WebSocket推送 Redis发布事件
│
▼
其他节点监听事件并推送
消息持久化与业务集成
核心类:NotifyManager
负责将消息保存至数据库,并异步推送至集群节点。
@Transactional(rollbackFor = Throwable.class)
public NotifyMessageLog saveAndPublish(NotifyMessageLog msg) {
NotifyType.valueOf(msg.getType()).checkDataType(msg.getData());
// 1. 消息持久化
notifyMessageLogRepository.save(msg);
// 2. 异步推送事件
SpringContextUtil.publishEvent(new NotifyMessageEvent(msg));
return msg;
}
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/yudao-cloud
视频教程:https://doc.iocoder.cn/video/
总结
本项目提供了一个完整的 WebSocket 实时通信集成方案,覆盖:
-
STOMP 协议支持
-
Token 认证与用户绑定
-
分布式消息转发(基于 Redis)
-
消息持久化与业务解耦
可作为企业级项目中的即时通讯/通知模块的参考模板。
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。





文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)