集成必要性功能

This commit is contained in:
2026-03-12 16:25:24 +08:00
parent 5708f80091
commit f0649cb888
201 changed files with 303 additions and 19897 deletions

View File

@@ -1,21 +1,21 @@
# rdms-spring-boot-starter-websocket
# rdms-spring-boot-starter-websocket
## 1. 模块定位
`rdms-spring-boot-starter-websocket` 是 WebSocket 基础设施模块,用于统一处理连接、会话管理、消息分发与消息发送,并支持多节点场景下的广播投递
`rdms-spring-boot-starter-websocket` 是 WebSocket 基础设施模块,用于统一处理连接、会话管理、消息分发与消息发送。
模块聚合的核心能力:
- WebSocket 自动装配与路径注册
- 登录用户绑定与会话管理
- JSON 消息协议与监听器分发
- 消息发送与多节点广播
- 消息发送
## 2. 设计思路
- 统一 JSON 消息协议(`type` + `content`),通过 `type` 分发到对应监听器,降低业务耦合。
- 通过 `WebSocketSessionManager` 统一管理会话,支持按用户类型/用户编号/会话 ID 进行推送。
- 通过可插拔 `sender-type` 支持单机与多节点广播local/redis/rocketmq/rabbitmq/kafka
- 通过本地发送器支持单机消息推送
- 与安全体系结合,在握手阶段写入 `LoginUser`,便于后续鉴权与定向发送。
## 3. 功能模块
@@ -28,7 +28,7 @@
- 注册握手拦截器(默认 `LoginUserHandshakeInterceptor`
- 注册 `WebSocketSessionManager`
- 放行 WebSocket 路径的安全校验
- 注册消息发送器(按 `sender-type`
- 注册消息发送器
### 3.2 JSON 消息协议
@@ -69,14 +69,7 @@
消息会被封装为统一的 `JsonWebSocketMessage` 后发送。
### 3.5 多节点广播
`sender-type` 支持以下类型:
- `local`:单机直连(默认)
- `redis` / `rocketmq` / `rabbitmq` / `kafka`:通过 MQ 广播到各实例,再由各实例推送到本机会话
### 3.6 登录用户绑定
### 3.5 登录用户绑定
握手阶段会读取当前登录用户并写入 WebSocket Session
@@ -102,13 +95,11 @@ rdms:
websocket:
enable: true
path: /ws
sender-type: local
```
说明:
- `path` 默认 `/ws`
- `sender-type` 默认 `local`
- `enable` 默认 `true`
### 4.3 连接方式
@@ -148,49 +139,4 @@ public void push(Long userId, NoticeDTO notice) {
}
```
### 4.6 多节点广播配置示例
Redis
```yaml
rdms:
websocket:
sender-type: redis
```
RocketMQ
```yaml
rdms:
websocket:
sender-type: rocketmq
sender-rocketmq:
topic: ws-topic
consumer-group: ws-group
```
Kafka
```yaml
rdms:
websocket:
sender-type: kafka
sender-kafka:
topic: ws-topic
consumer-group: ws-group
```
RabbitMQ
```yaml
rdms:
websocket:
sender-type: rabbitmq
sender-rabbitmq:
exchange: ws-exchange
queue: ws-queue
```
注意:
- 使用 MQ 模式时,请确保对应 MQ 客户端依赖与连接配置已就绪。

View File

@@ -39,28 +39,6 @@
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<!-- 消息队列相关 -->
<dependency>
<groupId>com.njcn</groupId>
<artifactId>rdms-spring-boot-starter-mq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
</project>