集成必要性功能
This commit is contained in:
@@ -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 客户端依赖与连接配置已就绪。
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user