Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mica
mica-mqtt
提交
08fb230d
mica-mqtt
项目概览
mica
/
mica-mqtt
通知
71
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
mica-mqtt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
08fb230d
编写于
4月 25, 2023
作者:
浅梦2013
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
✨
代码优化
上级
420af542
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
4 deletion
+19
-4
example/mica-mqtt-example/src/main/java/net/dreamlu/iot/mqtt/server/MqttServerTest.java
...main/java/net/dreamlu/iot/mqtt/server/MqttServerTest.java
+1
-1
mica-mqtt-common/src/main/java/net/dreamlu/iot/mqtt/core/util/TopicUtil.java
...c/main/java/net/dreamlu/iot/mqtt/core/util/TopicUtil.java
+10
-3
mica-mqtt-common/src/test/java/net/dreamlu/iot/mqtt/core/util/TopicUtilTest.java
...st/java/net/dreamlu/iot/mqtt/core/util/TopicUtilTest.java
+8
-0
未找到文件。
example/mica-mqtt-example/src/main/java/net/dreamlu/iot/mqtt/server/MqttServerTest.java
浏览文件 @
08fb230d
...
...
@@ -49,7 +49,7 @@ public class MqttServerTest {
// mqtt 3.1 协议会校验 clientId 长度。
// .maxClientIdLength(64)
.
messageListener
((
context
,
clientId
,
topic
,
qos
,
message
)
->
{
logger
.
info
(
"clientId:{}
message:{} payload:{}"
,
clientId
,
message
,
ByteBufferUtil
.
toString
(
message
.
getPayload
()));
logger
.
info
(
"clientId:{}
payload:{}"
,
clientId
,
ByteBufferUtil
.
toString
(
message
.
getPayload
()));
})
// 客户端连接状态监听
.
connectStatusListener
(
new
MqttConnectStatusListener
())
...
...
mica-mqtt-common/src/main/java/net/dreamlu/iot/mqtt/core/util/TopicUtil.java
浏览文件 @
08fb230d
...
...
@@ -172,9 +172,16 @@ public final class TopicUtil {
* @return 获取处理完成之后的 topic
*/
public
static
String
getTopicFilter
(
String
topicTemplate
)
{
// 替换 ${name} 为 + 替换 #{name} 为 #
return
topicTemplate
.
replaceAll
(
"\\$\\{[\\s\\w.]+}"
,
"+"
)
.
replaceAll
(
"#\\{[\\s\\w.]+}"
,
"#"
);
// 替换 ${name} 为 +
StringBuilder
sb
=
new
StringBuilder
(
topicTemplate
.
length
());
int
cursor
=
0
;
for
(
int
start
,
end
;
(
start
=
topicTemplate
.
indexOf
(
"${"
,
cursor
))
!=
-
1
&&
(
end
=
topicTemplate
.
indexOf
(
'}'
,
start
))
!=
-
1
;
)
{
sb
.
append
(
topicTemplate
,
cursor
,
start
);
sb
.
append
(
'+'
);
cursor
=
end
+
1
;
}
sb
.
append
(
topicTemplate
.
substring
(
cursor
));
return
sb
.
toString
();
}
}
mica-mqtt-common/src/test/java/net/dreamlu/iot/mqtt/core/util/TopicUtilTest.java
浏览文件 @
08fb230d
...
...
@@ -61,4 +61,12 @@ class TopicUtilTest {
Assertions
.
assertTrue
(
TopicUtil
.
match
(
"/iot/test/123"
,
"/iot/test/123"
));
}
@Test
void
test2
()
{
String
s1
=
"$SYS/brokers/${node}/clients/${clientId}/disconnected"
;
String
s2
=
"$SYS/brokers/+/clients/+/disconnected"
;
String
s3
=
TopicUtil
.
getTopicFilter
(
s1
);
Assertions
.
assertEquals
(
s3
,
s2
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录