jeelowcode-plugin-socket 是 JeeLowCode 低代码平台的 Socket 通信插件,提供了基于 Netty 的高性能 WebSocket 服务和 MQTT 消息路由功能。该插件采用责任链模式处理消息流程,支持多种消息类型(P2P、租户广播、自定义),并提供了灵活的扩展机制。
功能:基于 Netty 的 WebSocket 服务器,支持高并发连接
配置参数:
jeelowcode.socket.ip - 服务IP地址jeelowcode.socket.port - 服务端口jeelowcode.socket.bossGroupNum - 主线程数jeelowcode.socket.workGroupNum - 工作线程数jeelowcode.socket.wsPath - WebSocket路径特性:
消息按顺序经过以下处理链:
支持多种解密策略:AES、Base64、自定义加密算法
对消息进行参数增强处理,支持自定义参数策略扩展
验证 Token,建立会话(MqttSession),支持用户身份和租户信息绑定
处理主题订阅/取消订阅,管理客户端订阅关系
消息路由分发,支持本地路由(LocalRouterStrategy)和 MQTT 路由(MqttRouterStrategy)
| 消息类型 | 类型值 | 说明 |
|---|---|---|
| MESSAGE | message |
普通消息 |
| AUTH | auth |
认证消息(建立会话) |
| SUBSCRIBE | sucribe |
订阅主题 |
| UNSUBSCRIBE | unSucribe |
取消订阅主题 |
主题格式: p2p@@{tenantId}
功能:实现用户之间的 1v1 私聊
消息体结构:
{
"toUserId": 123, // 接收者用户ID
"msg": "Hello!" // 消息内容
}
特性:
主题格式: tenant@@{tenantId}
功能:向同一租户下的所有在线用户广播消息
特性:
主题格式: 自定义
功能:支持业务自定义主题和消息处理逻辑
特性:
基于令牌桶算法的限流机制:
基于 Netty IdleStateHandler 的心跳机制:
支持分布式场景下的消息路由:
jeelowcode.mqtt.senderType=mqtt配置参数:
jeelowcode.mqtt.host - MQTT Broker 地址jeelowcode.mqtt.username - MQTT 用户名jeelowcode.mqtt.password - MQTT 密码通过注解声明式配置主题监听:
@Component
@MqttSubscribeTopic(
topics = "myTopic@@1", // 订阅的主题列表
requireLogin = true, // 是否需要登录
kickoutAfter = false, // 是否踢出之前的订阅者
enableSysEncrypt = false, // 是否启用系统加密
selfParamStrategies = {...}, // 自定义参数策略
selfCryptoStrategies = {...} // 自定义加密策略
)
public class MyMessage implements IMessageStrategy {
@Override
public void handleMessage(String topic, MqttDataVo vo) {
// 处理消息逻辑
}
}
管理 Channel 与 SessionId 的映射关系
管理用户会话信息(MqttSession)
管理主题订阅关系
管理连接计数
{
"header": {
"sessionId": "channel-session-id", // 会话ID
"token": "user-auth-token", // 认证Token
"topic": "p2p@@1", // 主题
"messageType": "message" // 消息类型
},
"body": "{...}", // 消息体(JSON字符串)
"enhanceParam": { // 增强参数(由参数链添加)
"key": "value"
}
}
客户端连接到 ws://host:port/ws
{"header": {"messageType": "auth", "token": "xxx"}, "body": "{}"}
{"header": {"messageType": "sucribe", "topic": "p2p@@1"}, "body": "{}"}
{"header": {"messageType": "message", "topic": "p2p@@1"}, "body": "{\"toUserId\": 123, \"msg\": \"Hello\"}"}
发送取消订阅消息或直接关闭 WebSocket 连接
实现 ICryptoStrategy 接口:
实现 IParamStrategy 接口:
实现 IMessageStrategy 接口并使用 @MqttSubscribeTopic 注解:
用户之间的实时聊天、群组消息、客服系统
系统通知、业务提醒、实时告警
实时数据更新、状态同步、协同编辑
游戏状态同步、玩家交互、实时对战
设备状态监控、性能指标推送、日志流
多租户隔离、企业内部通信、工作流通知
JeeLowCode Socket Plugin - 构建高性能实时通信应用
基于 Netty + MQTT 的企业级 WebSocket 解决方案